Django 模板:Csrf 令牌对于同一表单中的多个 post 请求无效

Django Template: Csrf token invalid for multiple post request in the same form

我正在做一个 Django 项目,遇到了一个涉及 csrf 令牌的问题。

我有一个用 javascript 函数处理提交的表单,因为在同一个表单中我需要执行 2 POST。 表格是这样的:

<form> 
{% csrf_token %}
   <input name="field_1" type="text">
   ....
   ....
   <input name="file" type="file">
   <button onclick="send_form()"> Send data </button>
</form>

send_form() 方法使用 axios 执行两个 post 请求。第一个发送文本字段,第二个发送文件。我需要这样做,因为服务器有两个不同的 api 用于管理文本数据和文件。

问题是第一个 post 成功,然后第二个失败,给出 403 错误,在 header 我可以看到错误

"CSRF Failed: CSRF token missing or incorrect."

有没有办法以单一形式做到这一点?我读到有人将 csrf 应用于整个 body 页面,但我不知道该怎么做。

感谢您的任何回答。

您收到该错误的原因是您没有指定您正在发出的请求类型。这需要在 <form> 标签

中完成

例如:<form action="call_view_function" method="post">

如果您要调用 views.py 函数,您应该在 <form> 标记中调用 而不是 onclick=