Django — Добавьте схему Django Rest Swagger в функции с тегами DRF с помощью «@api_view».

#django #django-rest-framework #swagger

Вопрос:

Django — Как добавить автоматическую схему swagger в функции с тегами DRF @api_view с помощью ?

У меня есть эта функция

view.py

 @api_view(['POST'])
@swagger_auto_schema(
    request_body=PostSerializer,
    operation_description="Create a post object"
)
def post_create_post(request):
 

введите описание изображения здесь
Но требования к данным тела запроса не отображаются в пользовательском интерфейсе Swagger. Как вы добавляете документацию swagger в конечные точки, созданные с помощью @api_view ? Также в идеале я хотел бы добавить список параметров с их типами в схему swagger.

Комментарии:

1. Кроме того, не отображается описание вашей операции. Это должно быть «Создать объект публикации» вместо «Конечная точка публикации для текущего пользователя, создающего сообщение об обновлении цели».

2. Ваш фрагмент кода выглядит нормально, не могли бы вы предоставить нам больше кода, например, код маршрутизации urls.py или PostSerializer реализации?

Ответ №1:

Проблема заключается в заказе

 @swagger_auto_schema(
    method='post',
    request_body=PostSerializer,
    operation_description="Create a post object"
)
@api_view(['POST'])
def post_create_post(request):
 

вам также необходимо добавить method параметр в @swagger_auto_schema

Ответ №2:

Декораторы применяются в первую очередь для тех, кто «ближе всего» к определению функции. Чтобы использовать @swagger_auto_schema декоратор, @api_view сначала необходимо применить декоратор.

Следовательно, исправленная версия является:

 @swagger_auto_schema(
    request_body=PostSerializer,
    operation_description="Create a post object"
)
@api_view(['POST'])
def post_create_post(request):
 

Редакция: в другом ответе говорится:

вам также необходимо добавить параметр метода в @swagger_auto_schema

Однако для маршрутов, которые имеют только один метод, нет необходимости указывать его, как это будет принято для вас, по крайней мере, в текущей версии библиотеки drf_yasg.