#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.