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网站 出现了
Dans Django, l'erreur suivante est susceptible de se produire lors de l'utilisation de post :
C'est parce que Django nous aide à activer la protection contre les Attaques CSRF CSRF (cross-site request forgery) est une requête intersite malveillante ou une attaque qui déguise l'utilisateur. serveur de navigation de l'utilisateur pour accéder à un site Web authentifié et effectuer certaines opérations malveillantes. Le navigateur de l'utilisateur ayant été authentifié par le site Internet, celui-ci permettra d'effectuer ces opérations en toute confiance (même si ces opérations ne sont pas requises par le site Internet ou ne sont pas volontaires de la part de l'utilisateur).
Notre serveur a donc besoin de quelques mesures de protection. Une méthode de protection courante consiste à utiliser un jeton aléatoire généré par le serveur et à l'inclure dans le formulaire envoyé au client. Lorsque le client renvoie le formulaire, le serveur vérifie si le jeton a été émis par lui-même, empêchant ainsi les attaques.
Comme il y a un
settings.py
par défaut dansMIDDLEWARE_CLASSES
dans le fichier'django.middleware.csrf.CsrfViewMiddleware'
, Django exigera ici une vérification du jeton CSRF. Afin de rendre notre site Web plus sécurisé, nous suivons toujours les règles du jeu étape par étape. Allez!Ajoutez
<form>
à{% csrf_token %}
en html comme suit :Cela résoudra le problème
Questions auxquelles j'ai répondu : Python-QA
<button id="btn">Submit</button> est écrit comme <input type="submit" value="submit">, bien sûr, {% csrf_token %} ne peut pas manquer
Il existe un moyen plus simple de commenter la configuration csrf dans le fichier de paramètres. .