一.報(bào)錯(cuò)信息
"detail": "CSRF Failed: CSRF cookie not set."
二.解決辦法
方法一:
在配置文件中配置
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.TokenAuthentication',
)
}
推薦Python大牛在線分享技術(shù) 扣qun:855408893
領(lǐng)域:web開發(fā),爬蟲,數(shù)據(jù)分析,數(shù)據(jù)挖掘,人工智能
零基礎(chǔ)到項(xiàng)目實(shí)戰(zhàn),7天學(xué)習(xí)上手做項(xiàng)目
方法二.在提交信息中加上csrf_token:
頁面form框中設(shè)置
{% csrf_token %}
這代碼在頁面中的顯示內(nèi)容
<input type="hidden" name="csrfmiddlewaretoken" value="l9gICFdVzkDkLExUoAPRpE0ElkGtG70Xmn6u536Keo3kaQPXEeC00g5kbnY3vJGd">
如果是ajax提交的話
在data中加上
data:{
..
..
'csrfmiddlewaretoken': '{{csrf_token}}' //或者 'csrfmiddlewaretoken':'l9gICFdVzkDkLExUoAPRpE0ElkGtG70Xmn6u536Keo3kaQPXEeC00g5kbnY3vJGd'
}
三.奇怪現(xiàn)象肯能與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',注釋掉你用方法二的時(shí)候也會(huì)報(bào)錯(cuò),只有方法一能正常使用