如果用户点击在目标网页上提交表单,则会将其带到另一个页面(第二页),但如果用户尝试通过另一个表单帖子登录第二页,则用户会收到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 但是没有't worked. I'已经检查过,加载后第二页上会出现令牌 . 我知道了's something to do with the csrf token but I can' t弄清楚了 .

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

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