Django rest PageNumber 分页

Pab*_*ada 2 python django pagination django-rest-framework

我有一个简单的 django rest 框架的 Pagination 类:

class StandardResultsSetPagination(PageNumberPagination):
    page_size = 100
    page_size_query_param = 'page_size'
    max_page_size = 1000

# Create your views here.
class ResultSet(generics.ListAPIView):
    queryset = Result.objects.all()
    serializer_class = ResultSetSerializer
    pagination_class = StandardResultsSetPagination
Run Code Online (Sandbox Code Playgroud)

此类当前返回一个带有'prev''next'键的字典,其中包含带有下一页和上一页的 URL。我想要实现的是'prev''next'只返回页码而不是整个 URL。

我怎样才能做到这一点?

itt*_*tus 5

您可以覆盖get_next_linkget_previous_linkPageNumberPagination 默认为:

   def get_next_link(self):
        if not self.page.has_next():
            return None
        url = self.request.build_absolute_uri()
        page_number = self.page.next_page_number()
        return replace_query_param(url, self.page_query_param, page_number)

    def get_previous_link(self):
        if not self.page.has_previous():
            return None
        url = self.request.build_absolute_uri()
        page_number = self.page.previous_page_number()
        if page_number == 1:
            return remove_query_param(url, self.page_query_param)
        return replace_query_param(url, self.page_query_param, page_number)
Run Code Online (Sandbox Code Playgroud)

您可以覆盖:

class StandardResultsSetPagination(PageNumberPagination):
    page_size = 100
    page_size_query_param = 'page_size'
    max_page_size = 1000

    def get_next_link(self):
        if not self.page.has_next():
            return None
        page_number = self.page.next_page_number()
        return page_number

    def get_previous_link(self):
        if not self.page.has_previous():
            return None
        page_number = self.page.previous_page_number()
        return page_number
Run Code Online (Sandbox Code Playgroud)