为什么在使用 django-rest-framework 时不需要 `csrf_exempt`?
Why is `csrf_exempt` not needed when using django-rest-framework?
当我使用 Postman 发出 POST 请求时,我收到错误消息 Forbidden (CSRF cookie not set.)
class BooksView(View):
def post(self, request):
如果我使用 csrf_exempt
则不会发生错误
from django.utils.decorators import method_decorator
from django.views.decorators.csrf import csrf_exempt
@method_decorator(csrf_exempt, name='dispatch')
class BooksView(View):
def post(self, request):
但是,当我使用django-rest-framework
时根本不会出现这个错误
from rest_framework.views import APIView
# /books
class BooksView(APIView):
def post(self, request):
django-rest-framework 和 APIView
class 相对于 csrf
在做什么?
django-rest-framework 中的所有视图和视图集都继承自 APIView
,这个 class 用 csrf_exempt
in the as_view
method.
包装自己
当我使用 Postman 发出 POST 请求时,我收到错误消息 Forbidden (CSRF cookie not set.)
class BooksView(View):
def post(self, request):
如果我使用 csrf_exempt
则不会发生错误
from django.utils.decorators import method_decorator
from django.views.decorators.csrf import csrf_exempt
@method_decorator(csrf_exempt, name='dispatch')
class BooksView(View):
def post(self, request):
但是,当我使用django-rest-framework
from rest_framework.views import APIView
# /books
class BooksView(APIView):
def post(self, request):
django-rest-framework 和 APIView
class 相对于 csrf
在做什么?
django-rest-framework 中的所有视图和视图集都继承自 APIView
,这个 class 用 csrf_exempt
in the as_view
method.