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),
]
# -*- 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'])
<!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网站 出现了
巴扎黑2017-04-18 09:20:22
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
天蓬老师2017-04-18 09:20:22
<button id="btn">Submit</button> は <input type="submit" value="submit"> として記述されます。もちろん、{% csrf_token %} を省略することはできません