在查看数据列表的API中,如果 数据量 比较大,肯定不能把所有的数据都展示给用户,而需要通过分页展示。

在drf中为我们提供了一些分页先关类:

  1. BasePagination,分页基类
  2. PageNumberPagination(BasePagination) 支持 /accounts/?page=4&page_size=100 格式的分页
  3. LimitOffsetPagination(BasePagination) 支持 ?offset=100&limit=10 格式的分页
  4. CursorPagination(BasePagination) 支持 上一下 & 下一页 格式的分页(不常用)

APIView视图

如果编写视图是直接继承APIView,那么在使用分页时,就必须自己手动 实例化 和 调用相关方法。

1.PageNumberPagination

语法一:每页显示PAGE_SIZE
image.png

语法二:允许用户自定义显示PAGE_SIZE
image.png

2.LimitOffsetPagination

调用方式类似
limit默认为示PAGE_SIZE
image.png

3.CursorPagination

不太灵活
image.png

GenericAPIView派生类

如果是使用 ListModelMixin 或 ModelViewSet ,则只需要配置相关类即可,内部会自动执行相关分页的方法。

1.PageNumberPagination

image.png

2.LimitOffsetPagination

image.png

3.CursorPagination

image.png