你好,我是一個新手試圖使用Django來註冊一些用戶,我一直在閱讀Django的書和我一本關於註冊章,http://www.djangobook.com/en/2.0/chapter14/當我做了說明我得到這個Django的書過時CSRF保護
禁止(403)
CSRF驗證失敗。請求中止。對未給予 幫助
原因:
CSRF token missing or incorrect.
在一般情況下,當有一個真正的跨站請求僞造,或當Django的CSRF機制尚未正確使用可能發生這種情況。對於POST表單,您需要確保:
Your browser is accepting cookies.
The view function uses RequestContext for the template, instead of Context.
In the template, there is a {% csrf_token %} template tag inside each POST form that targets an internal URL.
If you are not using CsrfViewMiddleware, then you must use csrf_protect on any views that use the csrf_token template tag, as well as those that accept the POST data.
你會看到這個頁面的幫助部分,因爲你有DEBUG =真在你的Django設置文件。將其更改爲False,並且只顯示最初的錯誤消息。
您可以使用CSRF_FAILURE_VIEW設置來自定義此頁面。
我把{%csrf_token%}模板標籤放在的post標籤中,它仍然給我這個錯誤。感謝
# views.py
#
# Copyright 2012 Talisman <[email protected]>
from django.shortcuts import render_to_response
from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.http import HttpResponseRedirect
def home (request):
return render_to_response('FirstTemplate.html',)
def register(request):
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
new_user = form.save()
return HttpResponseRedirect("/books/")
else:
form = UserCreationForm()
return render_to_response("register.html", {
'form': form,
})
形式
{% extends "base.html" %}
{% block title %}Create an account{% endblock %}
{% block content %}
<h1>Create an account</h1>
<form action="" method="post"{% csrf_token %}>
{{ form.as_p }}
<input type="submit" value="Create the account">
</form>
{% endblock %}
{%csrf_token%}是後