本文介绍了Django rest swagger_auto_schema 自定义响应体的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经覆盖了 django rest 视图中的 list 函数来自定义响应主体(它返回一个 json 数组,我想返回一个包含该数组的对象)我也想把这个回复放在 swagger doc 中!我在 Django 中使用 drf_yasg 应用程序.我写了这段代码:

I've overridden the list function from django rest viewset to customize the response body (it returned an json array, I wanted to return an object that contains the array)I want to put this response in swagger doc too! I use drf_yasg app in django.I've written this code:

from drf_yasg.openapi import Schema, TYPE_OBJECT, TYPE_STRING, TYPE_ARRAY
from drf_yasg.utils import swagger_auto_schema
class StudentViewSet(viewsets.ModelViewSet):
    @swagger_auto_schema(responses={200: Schema(type=TYPE_OBJECT)})
    def list(self, request, *args, **kwargs):
        queryset = self.filter_queryset(self.get_queryset())
        page = self.paginate_queryset(queryset)
        if page is not None:
            serializer = self.get_serializer(page, many=True)
            return self.get_paginated_response(serializer.data)
        serializer = self.get_serializer(queryset, many=True)
        return Response({'students': serializer.data})

我不知道如何将我的响应对象描述提供给 Schema 对象.我搜索了很多,但没有发现任何有用的东西!

I don't know how to give my response object description to the Schema object. I've searched so much but I found nothing useful!

推荐答案

试试下面的代码:

@swagger_auto_schema(responses={
    status.HTTP_200_OK: Schema(
        type=TYPE_OBJECT,
        properties={
           'students': Schema(
              type=TYPE_ARRAY
           )
        }
    )
})

这篇关于Django rest swagger_auto_schema 自定义响应体的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-27 15:45