You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django添加{% csrf_token %}后仍提示CSRF verification failed错误怎么办

问题根因

你的CSRF报错核心是模板里的表单配置错误导致csrf token无法正常传递给后端:

  • 你给form标签设置了enctype="text/plain"编码格式,Django CSRF校验仅支持application/x-www-form-urlencoded(表单默认编码,无需额外配置)、multipart/form-data(仅上传文件时使用)两种编码,text/plain格式不会将csrf token参数正常提交到后端,直接触发校验失败。
  • form标签重复定义了action属性,空值和index.html冲突会导致提交地址异常,也可能影响参数传递。

修复步骤

  1. 修改模板里的form标签代码,删除多余的enctype和重复的action属性,修改后代码如下:
<form class="contact_info" action="" method="post">
  1. 修改后清空浏览器缓存,重新加载页面提交表单即可解决CSRF报错问题。

其他排查方式

如果修改后仍报错,可以按以下步骤确认:

  • 打开浏览器开发者工具的网络面板,提交表单后查看对应POST请求的表单数据,确认存在csrfmiddlewaretoken字段且有值
  • 检查Django服务端session是否正常,确保Cookie里的csrftoken值和表单里的token值匹配

后续优化建议

你当前的contactView处理完POST请求后没有返回重定向,用户刷新页面会触发重复提交,建议在表单校验通过后添加重定向逻辑:

if form.is_valid():
    print("FORM IS VALID")
    print(form.cleaned_data)
    # 新增重定向到当前页或者成功提示页
    return redirect('leonebraiding:contact')

另外你表单里的日期、时间选择控件没有设置name属性,选中的时间值不会随表单提交到后端,需要补充对应配置才能正常接收预约时间参数。

内容的提问来源于stack exchange,提问作者Dinosahr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 07:15:03