我正在编写Django应用,我的注册页面出现403错误:
禁止(403)
CSRF验证失败。请求中止。
失败原因:
CSRF令牌丢失或不正确。
这里是视图:
def register(request):
form = UserCreationForm(request.POST)
if form.is_valid():
form.save()
return redirect('login')
return render(request, "register.html", {'form' : form})
这是相关模板中的表格:
{% block content %}
<form method="POST">
{% csrf_token %}
{% for field in form %}
<p>
{{ field.label_tag }}
{{ field }}
</p>
{% endfor %}
<button type="submit" class="button">Register</button>
</form>
{% endblock %}
一些相关事实:
((1)我的网站上没有其他页面抛出此错误,即使许多页面需要CSRF令牌。
((2)我用来插入CSRF令牌的代码在此模板中与在其他模板中相同(除非我的三次检查使我失败)。
((3)[可能相关?]]这是我直接导入views.py中而不在form.py中首先进行修改的唯一形式。因此,views.py有两行是:
from django.contrib.auth.forms import UserCreationForm
[...]
from foo.forms import FooForm, FooBarForm, UploadFooForm
任何人都感谢。我已经尝试了大部分我认为是显而易见的调试步骤(删除{%csrf_token%}行,读取调试输出并确保[我认为]这些问题不适用于我,等等。
尝试删除迁移文件和数据库文件,然后进行迁移并再次迁移。