我有這種說法Django的REST框架故宮CSRF的cookie沒有設置
from rest_framework import parsers, renderers
from rest_framework.authtoken.models import Token
from rest_framework.authtoken.serializers import AuthTokenSerializer
from rest_framework.response import Response
from rest_framework.views import APIView
from .serializers import EmailUserSerializer
from django.utils.decorators import method_decorator
from django.views.decorators.csrf import csrf_exempt
@method_decorator(csrf_exempt, name='post')
class ObtainAuthToken(APIView):
throttle_classes =()
permission_classes =()
parser_classes = (parsers.FormParser, parsers.MultiPartParser, parsers.JSONParser,)
renderer_classes = (renderers.JSONRenderer,)
serializer_class = AuthTokenSerializer
def post(self, request, *args, **kwargs):
serializer = self.serializer_class(data=request.data)
serializer.is_valid(raise_exception=True)
user = serializer.validated_data['user']
token, created = Token.objects.get_or_create(user=user)
user_serializer = EmailUserSerializer(user)
return Response({'token': token.key, 'user': user_serializer.data})
obtain_auth_token = ObtainAuthToken.as_view()
這個網址
urlpatterns = [
url(r'^login/$',views.obtain_auth_token, name='get_auth_token'),
url(r'^login2/$',ObtainAuthToken, name='get_auth_token'),
]
我試圖用這樣的郵遞員發佈:
127.0.0.1:8000/api/login2/
但我只能收到此錯誤
Forbidden (CSRF cookie not set.): /api/login2/
[02/Jul/2017 22:49:11] "POST /api/login2/ HTTP/1.1" 403 2891
我知道有數百個職位這樣的,我搜索了很久一個解決方案,但似乎沒有任何工作
tryied這樣
urlpatterns = patterns('',
url('^login2/$', csrf_exempt(ObtainAuthToken)),
...
)
這
from django.utils.decorators import method_decorator
class LoginView(APIView):
@method_decorator(csfr_exempt)
def dispatch(self, *args, **kwargs):
...
,也這
from django.utils.decorators import method_decorator
@method_decorator(csrf_exempt, name='dispatch')
class LoginView(APIView):
...
and this
@method_decorator(csrf_exempt, name='post')
class ObtainAuthToken(APIView):
throttle_classes =()
...
@csrf_exempt
def post(self, request, *args, **kwargs):
serializer = self.serializer_class(data=request.data)
嘗試'@method_decorator(csrf_exempt,name ='post')' - >'@ csrf_exempt' ...看看是否可以解決它? –
你的意思是? @method_decorator(csrf_exempt,名稱= '後') 類ObtainAuthToken(APIView): throttle_classes =()... @csrf_exempt 高清張貼(個體經營,要求,* ARGS,** kwargs): 串行= self.serializer_class(data = request.data) ... 仍然沒有工作 –