【问题标题】:drf-yasg custom json bodydrf-yasg 自定义 json 正文
【发布时间】:2020-07-24 07:09:39
【问题描述】:

如何在 ClassBased django 视图中自定义 drf-yasg 架构?

我尝试了这部分代码,但生成的 swagger 不尊重更改。

class CustomView(CreateAPIView):
    permission_classes = (IsAuthenticated,)
    serializer_class = CustomSerializer

    @swagger_auto_schema(request_body=openapi.Schema(
        type=openapi.TYPE_OBJECT,
        properties={
            'phone': openapi.Schema(type=openapi.TYPE_STRING, description='string'),
            'body': openapi.Schema(type=openapi.TYPE_STRING, description='string'),
        }))
    def create(self, request: Request, *args, **kwargs):
        phone = request.data.get('phone')
        body = request.data.get('body')
        ...

【问题讨论】:

    标签: django swagger drf-yasg


    【解决方案1】:

    我找到了,这里是正确的代码:

    class CustomView(CreateAPIView):
        permission_classes = (IsAuthenticated,)
        serializer_class = CustomSerializer
        http_method_names = ['post']
    
        @swagger_auto_schema(request_body=openapi.Schema(
            type=openapi.TYPE_OBJECT,
            properties={
                'phone': openapi.Schema(type=openapi.TYPE_STRING, description='The desc'),
                'body': openapi.Schema(type=openapi.TYPE_STRING, description='The desc'),
            }))
        def post(self, request: Request, *args, **kwargs):
            phone = request.data.get('phone')
            body = request.data.get('body')
            ...
    

    对于 IN_QUERY 类型,像这样:

    class CustomListView(ListAPIView):
        permission_classes = (IsAuthenticated,)
        serializer_class = CustomSerializer
        http_method_names = ['get']
    
        @swagger_auto_schema(manual_parameters=[
            openapi.Parameter('obj_id', openapi.IN_QUERY,
                              type=openapi.TYPE_STRING),
        ])
        def get(self, request, *args, **kwargs):
            obj_id = self.request.DATA.get('obj_id')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-14
      • 1970-01-01
      • 2019-07-27
      • 1970-01-01
      • 2021-05-13
      • 1970-01-01
      • 2022-11-02
      • 2021-01-10
      相关资源
      最近更新 更多