一系列带有django的表单帖子导致403错误

时间:2016-07-15 12:46:13

标签: django django-forms django-views django-csrf

如果用户点击在目标网页上提交表单,则会将其转到另一个页面(第二页),但如果用户尝试通过另一个表单帖子登录第二页,则用户会收到403禁止错误。

着陆页表单有效。 登录表单工作正常。 但是提交登录页面表单然后登录表单导致403 CSRF验证失败。

第一页上的表单返回:

render(request, 'page.html', context_var)

css的表格无效:

<form action="{% url 'url_test' %}" method="POST">
<input type="hidden" name="some_name" value="for_view_use">
{% csrf_token %}
<button type="submit" name="other_name" value="value">button</button>
</form>

第二种形式或允许用户登录的视图返回:

HttpResponse('success')

并且css的登录表单为:

<form action="{% url 'login' %}" method="post">
{% csrf_token %}
<input type="text" name="username">
<input type="password" name="password">
<button type="submit">Sign In</button>
</form>

我确信这两个视图都会返回这些值,因为我已单独测试它们。

我尝试过使用@csrf_protect,但这并没有奏效。我已经检查过,加载后第二页上会出现令牌。我知道它与csrf令牌有关,但我无法弄明白。

对我来说,好像第一个表单没有为下一页返回一个可接受的csrf标记。

编辑: 我没有解决问题本身,但我注意到第一个请求只是从服务器提取数据,所以我将其更改为GET请求,并且错误停止发生。在我看来,这不是一个答案所以我将保持这个线程打开,以防其他人在使用django连续表单POST请求时遇到问题。

0 个答案:

没有答案