【问题标题】:Django Rest Framework 3.2.3 pagination not working for generics.ListCreateAPIViewDjango Rest Framework 3.2.3 分页不适用于 generics.ListCreateAPIView
【发布时间】:2016-08-06 18:46:36
【问题描述】:

文档说我应该在子类化通用 List 或 ListCreateAPIView 时免费获得分页,但没有任何分页发生的迹象。

这是我在设置中的内容...

REST_FRAMEWORK = {
    'DEFAULT_PAGINATION_CLASS':   
        'rest_framework.pagination.PageNumberPagination',
    'PAGE_SIZE': 25,
    'MAX_PAGE_SIZE': 50,
    'TEST_REQUEST_DEFAULT_FORMAT': 'json',
    'TEST_REQUEST_RENDERER_CLASSES': (...
    ),
    'DEFAULT_FILTER_BACKENDS': (...
    )
}

我的观点:

class RequestList(generics.ListCreateAPIView):

    # set context for serializers
    def get_serializer_context(self, *args, **kwargs):
        context = {
            'request': self.request,
            'view': self,
            'format': self.format_kwarg,
            'request_type_id': 1}
    return context 

    request_type_code_model_map = {
        "S": Request.objects.filter(request_type_id=1, status='open'),
        ...}

    def get(self, request, request_type_code="S", format=None, *args,  **kwargs):

        queryset = self.request_type_code_model_map.get(
            request_type_code, "S")
        serializer_class = RequestSerializer
        serializer = serializer_class(
            instance=queryset, context=self.get_serializer_context(),
            many=True)

     return Response(serializer.data)

任何帮助将不胜感激。我尝试创建一个自定义分页器类,在设置中设置各种配置选项,但我似乎没有做任何分页尝试。分页适用于使用 ViewSets 的用户和组,但不适用于我使用泛型的任何视图。任何想法、关于我缺少什么的线索或解决方案将不胜感激。

【问题讨论】:

    标签: django django-rest-framework


    【解决方案1】:

    只要您不覆盖调用它的部分,您就可以免费获得分页。 您可以浏览list source 以了解它是如何实现的以及您应该如何编写您的get 方法。

    【讨论】:

    • 非常感谢 Linovia。这成功了。我以为昨天可能就是这种情况,并实施了一些可行的方法,但没有让我在可浏览的 API 中看到可见的控件。这是关键。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-23
    • 1970-01-01
    • 2018-03-06
    • 2018-01-06
    • 2016-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多