一.報錯信息 二.解決辦法 方法一: 在配置文件中配置 方法二.在提交信息中加上csrf_token: 頁面form框中設置 如果是ajax提交的話 在data中加上 三.奇怪現象肯能與django中中間件有衝突 django中間件 如果在中間件中把 註釋掉你用方法二的時候也會報錯,只有方法一能正常 ...
一.報錯信息
"detail": "CSRF Failed: CSRF cookie not set."
二.解決辦法
方法一:
在配置文件中配置
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.TokenAuthentication',
)
}
方法二.在提交信息中加上csrf_token:
頁面form框中設置
{% csrf_token %}
這代碼在頁面中的顯示內容
<input type="hidden" name="csrfmiddlewaretoken" value="l9gICFdVzkDkLExUoAPRpE0ElkGtG70Xmn6u536Keo3kaQPXEeC00g5kbnY3vJGd">
如果是ajax提交的話
在data中加上
data:{
..
..
'csrfmiddlewaretoken': '{{csrf_token}}' //或者 'csrfmiddlewaretoken':'l9gICFdVzkDkLExUoAPRpE0ElkGtG70Xmn6u536Keo3kaQPXEeC00g5kbnY3vJGd'
}
三.奇怪現象肯能與django中中間件有衝突
django中間件
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',
]
如果在中間件中把'django.middleware.csrf.CsrfViewMiddleware',
註釋掉你用方法二的時候也會報錯,只有方法一能正常使用