【发布时间】:2018-08-09 01:56:31
【问题描述】:
我在两页上有两个表格,一个指向另一个。当在第 1 页上按下“提交”时,它应该会将您带到第 2 页上的表单。第 2 页失败并显示“CSRF 验证失败。请求中止。”原因是“未设置 CSRF cookie。”
奇怪的是,如果我直接转到第 2 页,它加载得很好。如果我刷新页面并重新提交表单,我会再次收到 403,但如果我进入地址栏并点击“Enter”重新访问该页面,它会加载而不会出现错误。什么给了?
我使用的是最新版本的 Django,我在所有视图中使用渲染,在所有表单标签中使用 {% csrf_token %}。
为什么重新访问页面会修复 403 错误?表单之间没有发生登录或身份验证。事实上,我什至没有对第 1 页中提交的数据做任何事情(目前)。
相关代码如下:
第 1 页模板:
<div class="">
<div class="">
<h1>Page 1</h1>
<p>What's up?</p>
<form action="{% url 'core:getPageTwo' %}" method="post">
{% csrf_token %}
{{ form }}
<input class="yellow_button" type="submit" value="Submit">
</form>
</div>
</div>
第 2 页视图:
def getPageTwo(request):
form = SomeForm()
context = {'form' : form}
return render (request, 'core/page_two.html', context)
第 2 页模板:
<div class="">
<div class="">
<h1>Page 2</h1>
<form action="#" method="post">
{% csrf_token %}
{{ form }}
</form>
</div>
</div>
【问题讨论】:
标签: python django cookies web csrf