【问题标题】:How to specify a query parameter serializer in django-rest-swagger?如何在 django-rest-swagger 中指定查询参数序列化器?
【发布时间】:2016-05-04 18:18:31
【问题描述】:

我正在使用 Django REST Framework 和 django-rest-swagger 为我的 API 创建可浏览的界面。我可以使用YAML docstring 指定请求主体序列化程序,但我还没有找到为请求查询参数指定序列化程序的方法。 我使用的视图很像:

class ListBans(BaseBanView):

    def get(self, request):
        """
        List all profile bans
        ---
        response_serializer: backend_serializers.BanSerializer
        request_serializer: moderator_serializers.ListBansSerializer
        """
        serializer = moderator_serializers.ListBansSerializer(data=request.query_params)
        if serializer.is_valid(raise_exception=True):
            # query profile bans
            data = []
            return APIResponse(status=status.HTTP_200_OK, data=data)

class ListBansSerializer(serializers.Serializer):
    limit = serializers.IntegerField(default=10, help_text='query limit')
    offset = serializers.IntegerField(default=0, help_text='query offset')

我想要实现的是让django-rest-swagger 为来自ListBansSerializer 的查询参数创建表单字段,这样我就不必在文档字符串中手动指定parameters 部分。有没有办法做到这一点?

【问题讨论】:

    标签: python django django-rest-framework yaml


    【解决方案1】:

    我创建了一个简单的装饰器,它自动将查询参数附加到文档字符串。源代码位于github。这是一个用法示例:

    class ListBansSerializer(serializers.Serializer):
        limit = serializers.IntegerField(default=10, help_text='query limit')
        offset = serializers.IntegerField(default=0, help_text='query offset')
    
    
    class ListBans(BaseBanView):
        @add_query_parameters(ListBansSerializer)
        def get(self, request):
            """
            List all profile bans
            ---
            response_serializer: backend_serializers.BanSerializer
            """
            serializer = moderator_serializers.ListBansSerializer(data=request.query_params)
            if serializer.is_valid(raise_exception=True):
                # query profile bans
                data = []
                return APIResponse(status=status.HTTP_200_OK, data=data)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-23
      • 2022-08-19
      • 2015-03-27
      • 1970-01-01
      • 2020-05-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多