【问题标题】:"get_paginated_response" in django-rest-framework 3.0django-rest-framework 3.0 中的“get_paginated_response”
【发布时间】:2015-07-04 12:31:52
【问题描述】:

在 DRF 3.1 中,我可以这样做以获得分页响应,但似乎 get_paginated_response() 在 3.0 中不可用。什么是等价物?

class NoteList(ListCreateAPIView):

    def list(self, request, *args, **kwargs):
        queryset = self.get_queryset()
        paged_queryset = self.paginate_queryset(queryset)
        serializer = NoteSerializer(paged_queryset, many=True)
        return self.get_paginated_response(serializer.data)

【问题讨论】:

    标签: python-2.7 django-rest-framework


    【解决方案1】:

    PaginationSerializer,通过以下方式设置序列化程序类:

    'DEFAULT_PAGINATION_SERIALIZER_CLASS':'YourCustomPaginationSerializer'

    class MyView(generics.GenericAPIView):
        pagination_serializer_class = YourCustomPaginationSerializerClass
    

    mixin.py

    def list(self, request, *args, **kwargs):
        instance = self.filter_queryset(self.get_queryset())
        page = self.paginate_queryset(instance)
        if page is not None:
            serializer = self.get_pagination_serializer(page)
        else:
            serializer = self.get_serializer(instance, many=True)
        return Response(serializer.data)
    

    generics.py

    def get_pagination_serializer(self, page):
        """
        Return a serializer instance to use with paginated data.
        """
        class SerializerClass(self.pagination_serializer_class):
            class Meta:
                object_serializer_class = self.get_serializer_class()
    
        pagination_serializer_class = SerializerClass
        context = self.get_serializer_context()
        return pagination_serializer_class(instance=page, context=context)
    

    如果你在做migration 的东西,别忘了settings.py 或View 中的分页参数,已经改成新的分页器了。

    比如。 PAGINATE_BY_PARAM -> page_size_query_param。

    无论如何,我认为新的分页器比以前的更舒适。 在Pagination Docs上查看更多详情

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-27
      • 2018-06-19
      • 2023-02-25
      • 1970-01-01
      • 1970-01-01
      • 2019-05-12
      • 2015-02-01
      • 1970-01-01
      相关资源
      最近更新 更多