1、在Django提交表单时报错:Django提交表单报错:
CSRF token missing or incorrect
具体报错页面如下:
2、有道词典翻译后如下:
通常,当存在真正的跨站点请求伪造时,或者Django的CSRF机制没有被正确使用时,就会出现这种情况。至于邮递表格,你须确保:
您的浏览器正在接受cookie。
视图函数将一个请求传递给模板的呈现方法。
在模板中,每个POST表单中都有一个{% csrf_token %}模板标记,目标是一个内部URL。
如果您没有使用CsrfViewMiddleware,那么您必须在任何使用csrf_token模板标签的视图以及那些接受POST数据的视图上使用csrf_protect。
该表单有一个有效的CSRF令牌。在登录另一个浏览器选项卡或登录后单击back按钮之后,您可能需要使用表单重新加载页面,因为登录后令牌会旋转。
您将看到这个页面的帮助部分,因为在Django设置文件中有DEBUG = True。将其更改为False,将只显示初始错误消息。
您可以使用CSRF_FAILURE_VIEW设置自定义这个页面。
3、解决办法:
(1)、确定项目底下的settings.py文件,是否存在django.middleware.csrf.CsrfViewMiddleware:
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
(2)、如果确定settings.py文件有配置了,还是报错,就要在form表单底下加一行代码:
{% csrf_token %}
这样应该就不会报上面错误了,以上内容仅供学习参考,谢谢!