Почему `csrf_exempt` не нужен при использовании django-rest-framework?

#django #django-rest-framework #django-views #csrf #django-csrf

#django #django-rest-framework #django-views #csrf #django-csrf

Вопрос:

Когда я делаю запрос POST с помощью Postman, я получаю сообщение об ошибке 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 класс по отношению к csrf ?

Ответ №1:

Все представления и наборы представлений в django-rest-framework наследуются от APIView , этот класс обертывается csrf_exempt в as_view метод.