こんにちは私はdjangoを使用して一部のユーザーを登録しようとしている初心者です。DjangoBookを読んでいて、登録に関する章を読んでいます。http://www.djangobook.com/en/2.0/chapter14/指示私はこれを取得します
禁止(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.
Django設定ファイルにDEBUG=Trueがあるため、このページのヘルプセクションが表示されます。これをFalseに変更すると、最初のエラーメッセージのみが表示されます。
CSRF_FAILURE_VIEW設定を使用して、このページをカスタマイズできます。
{%csrf_token%}テンプレートタグをpostタグ内に配置しても、このエラーが発生します。ありがとう
# views.py
#
# Copyright 2012 Talisman <KlanestroTalisman@gmail.com>
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 %}