Django REST Framework-分页(二)

2023-04-25 09:16:37 浏览数 (1)

LimitOffsetPagination 示例

以下是一个简单的使用 LimitOffsetPagination 分页器的示例:

代码语言:javascript复制
class BookViewSet(viewsets.ModelViewSet):
    queryset = Book.objects.all()
    serializer_class = BookSerializer
    pagination_class = BookPagination

在这个例子中,我们创建了一个名为 BookPagination 的分页器类,并设置了默认的每页返回的对象数量为 10。我们还为客户端指定了可以在查询参数中使用的 limitoffset 参数,并设置了最大页面大小为 100。最后,我们将 BookPagination 分页器类添加到 BookViewSet 视图集合中。

现在,当客户端发起请求时,我们的 BookViewSet 视图集合将使用 BookPagination 分页器将查询结果划分为多个页面,并将每个页面的数据返回给客户端。客户端可以在查询参数中指定 limitoffset 参数来请求不同的数据范围。

CursorPagination 示例

以下是一个简单的使用 CursorPagination 分页器的示例:

代码语言:javascript复制
from rest_framework.pagination import CursorPagination

class BookPagination(CursorPagination):
    ordering = 'id'
    page_size = 10
    cursor_query_param = 'cursor'

class BookViewSet(viewsets.ModelViewSet):
    queryset = Book.objects.all()
    serializer_class = BookSerializer
    pagination_class = BookPagination

在这个例子中,我们创建了一个名为 BookPagination 的分页器类,并指定了默认的页面大小为 10,并将 ordering 属性设置为 id,以便使用 id 字段作为排序依据。我们还为客户端指定了可以在查询参数中使用的 cursor 参数。最后,我们将 BookPagination 分页器类添加到 BookViewSet 视图集合中。

现在,当客户端发起请求时,我们的 BookViewSet 视图集合将使用 BookPagination 分页器将查询结果划分为多个页面,并将每个页面的数据返回给客户端。客户端可以使用上一页和下一页的游标链接来遍历页面,从而避免使用基于页码的分页器中的一些常见问题。

0 人点赞