python - django request请求问题求助
大家讲道理
大家讲道理 2017-04-18 09:18:22
0
4
722

urls.py

from django.conf.urls import url
from django.contrib import admin
from blog import views
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^$', views.index),
    url(r'^abc$',views.handler),
]



views.py
# -*- coding: utf-8 -*-
from django.shortcuts import render
from django.http import HttpResponse

# Create your views here.

def index(request):
    return render(request,"index.html")


def handler(request):
    return HttpResponse("<p>name:</p>" + request.POST['username'])



index.html
<!doctype html>
<html>
    <head>
        <meta charset="UTF-8"/>
        <title>index page</title>
    </head>
    <body>
       <form action="abc" method="POST">
               <input type="text" name="username">
               <button id="btn">提交</button>
       </form>
    </body>
</html>


我在谷歌浏览器下点击这个提交后出现了

我又直接打开abc网站 出现了



请问这是什么问题啊 要怎么解决啊 ?
大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全員に返信(4)
巴扎黑

Django では、post を使用すると次のエラーが発生する可能性があります:

リーリー

これは、Django が CSRF 攻撃 に対する保護を有効にするのに役立つためです。CSRF (クロスサイト リクエスト フォージェリ) は、悪意のあるクロスサイト リクエスト、または攻撃者がユーザーを欺く攻撃です。ユーザーの閲覧サーバーを攻撃して、認証された Web サイトにアクセスし、悪意のある操作を実行します。ユーザーのブラウザは Web サイトによって認証されているため、Web サイトではこれらの操作を安心して実行できます (これらの操作が Web サイトで要求されていないか、ユーザーの自発的でない場合でも)。

そのため、サーバーには何らかの保護措置が必要です。一般的な保護方法は、サーバーによって生成されたランダム トークンを使用し、クライアントに送信されるフォームに含めることです。クライアントがフォームを返送するときに、サーバーはトークンが独自に発行されたものであるかどうかを確認し、攻撃を防ぎます。

settings.py ファイルの MIDDLEWARE_CLASSES にはデフォルトの 'django.middleware.csrf.CsrfViewMiddleware' があるため、Django はここで CSRF トークンの検証を要求します。Web サイトの安全性を高めるために、段階的にゲームのルールに従います。さあ!

次のように、HTML の <form>{% csrf_token %} を追加します。

リーリー

これで問題は解決します


私が回答した質問: Python-QA

いいねを押す +0
小葫芦

リーリー

いいねを押す +0
Peter_Zhu

<button id="btn">Submit</button> は <input type="submit" value="submit"> として記述されます。もちろん、{% csrf_token %} を省略することはできません

いいねを押す +0
左手右手慢动作

設定ファイル内の csrf 構成をコメントアウトする簡単な方法があります。 。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート