首页 > 解决方案 > Django Rest Framework APIView 中的分页控件

问题描述

我尝试将分页添加到我的自定义视图中,并且分页有效,但我没有这个分页控件来更改页面,就像它在默认分页样式中一样,我如何将此控件添加到我的视图中?

我一直在寻找如何解决这个问题,但我几乎没有找到任何东西,通常当我找到某种方法将分页添加到自定义视图时,它看起来就像我拥有的​​那样,但这不是我想要的,因为这不会提供改变的可能性页。

分页.py

class CustomPagination(PageNumberPagination):
    page_size = 2
    page_size_query_param = 'page_size'

    def get_paginated_response(self, data):
        return Response({
            'next': self.get_next_link(),
            'previous': self.get_previous_link(),
            'count': self.page.paginator.count,
            'limit': self.page_size,
            'result': data
        })

视图.py

class TaskIndexAPIView(APIView):

    def filter_queryset(self, queryset):
        for obj in list(self.filter_backends):
            queryset = obj().filter_queryset(self.request, queryset, self)
            return queryset

    filter_backends = (filters.SearchFilter,)
    search_fields = ('name', 'description', 'user__username')

    def get_queryset(self):
        return Task.objects.all()

    def get(self, request):
        filtered_qs = self.filter_queryset(self.get_queryset())
        tasks = filtered_qs
        for i in tasks:
            if i.date <= date.today() and i.status == 'NEW':
                i.delayed = 'This task is delayed'
                i.save()
            else:
                i.delayed = ''
                i.save()
        pagination_class = CustomPagination()
        page = pagination_class.paginate_queryset(tasks, request)
        serializer = IndexSerializer(page, many=True)
        return Response(serializer.data)

标签: pythondjangopaginationdjango-rest-framework

解决方案


推荐阅读