Otrzymuję komunikat o błędzie "Nie ustawiono pliku CSRF cookie" podczas próby POST do prostej aplikacji testowej wykorzystującej framework REST Django. Próbowałem go z Django 1.4 i Django 1.6.2. Korzystam z frameworku Django REST v 2.3.13.Dlaczego otrzymuję komunikat "Nie ustawiono pliku cookie CSRF" podczas testu POST na Django REST?
Próbowałem użyć dekoratora @csrf_exempt
, ale to nie pomaga.
Jest to bardzo prosta aplikacja, bez rejestracji użytkownika/zalogować itp
Jakieś pomysły dlaczego dostaję ten błąd?
Aktualizacja: Zaktualizowałem mój adres urls.py, jak pokazano poniżej, a teraz działa!
Oto mój kod:
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/
Próbowałem tego przed opublikowaniem mojego pytania. Powinienem powiedzieć. Wciąż dostaję ten sam błąd. – smithy
Zaktualizowałem moją odpowiedź. Czy to jest rozwiązanie? – tjati
Nie chciałem wyłączać ochrony CSRF, ponieważ niektórzy użytkownicy będą umieszczać formularze za pośrednictwem przeglądarki internetowej i dla nich chcę ochrony CSRF. Udało mi się uruchomić go, aktualizując mój urls.py ... – smithy