drf-effectular: укажите пустую полезную нагрузку с помощью @extend_schema

Считайте, что у меня есть простая точка зрения:

      # serializers.py
class EmptyPayloadResponseSerializer(serializers.Serializer):
    detail = serializers.CharField()


# views.py
from rest_framework.views import APIView
from rest_framework.response import Response
from drf_spectacular.utils import extend_schema
from .serializers import EmptyPayloadResponseSerializer


class EmptyPayloadAPI(APIView):
    @extend_schema(responses=EmptyPayloadResponseSerializer)
    def post(self, request, *args, **kwargs):
        # some actions
        return Response(data={"detail": "Success"})

Когда я визуализирую схему, я получаю следующий ответ об ошибке:

Ошибка № 0: EmptyPayloadAPI: невозможно угадать сериализатор. Это изящная обработка отказа для APIViews. Рассмотрите возможность использования GenericAPIView в качестве базового класса представления, если представление находится под вашим контролем. Пока игнорируем просмотр.

Итак, как я могу сказать @extend_schema декоратор, что я не собираюсь ничего передавать в качестве полезной нагрузки?

1 ответ

Настройки request=None в @extend_schema(...) декоратор сделает свое дело !!!

      class EmptyPayloadAPI(APIView):
    @extend_schema(request=None, responses=EmptyPayloadResponseSerializer)
    def post(self, request, *args, **kwargs):
        # some actions
        return Response(data={"detail": "Success"})
Другие вопросы по тегам