當使用Django REST框架嘗試POST到簡單的測試應用程序時,我收到錯誤「未設置CSRF cookie」。我用Django 1.4和Django 1.6.2試了一下。我正在使用Django REST框架v 2.3.13。爲什麼POST POST到Django REST框架時會得到「CSRF cookie未設置」?
我已經嘗試使用@csrf_exempt
裝飾器,但它沒有幫助。
這是一個非常簡單的應用程序,沒有用戶註冊/登錄等
任何想法,爲什麼我得到這個錯誤?
更新:我已更新我的urls.py,如下所示,它現在正在工作!
這裏是我的代碼:
urls.py
from django.conf.urls import patterns, url
from quickstart import views
urlpatterns = patterns('',
url(r'^api_add/$', views.api_add, name='api_add'),
)
views.py
from rest_framework import status
from rest_framework.decorators import api_view
from rest_framework.response import Response
@api_view(['POST'])
def api_add(request):
return Response({"test": 'abc'})
settings.py
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
)
post.sh
curl -X POST -H "Content-Type: application/json" -d '
{
"name": "Manager",
"description": "someone who manages"
}' http://127.0.0.1:8000/api_add/
在發佈我的問題之前,我已經嘗試過。我應該說。我仍然得到同樣的錯誤。 – smithy
我更新了我的答案。這是一個解決方案嗎? – tjati
我不想關閉CSRF保護,因爲我會讓一些用戶通過網絡瀏覽器發佈表單,對於他們我希望獲得CSRF保護。我設法通過更新我的urls.py來得到它的工作... – smithy