分页组件
分页组件
查询所有,才有分页功能(例如网站的下一页功能,app下挂加载更多)
PageNumberPagination基本分页#
重要类属性#
- page_size = api_settings.PAGE_SIZE (每页显示条数)
- page_query_param = 'page' (查询时用的参数)
- page_size_query_param = None (更改返回条数)
- max_page_size = None (每页最大显示条数)
基本定义#
# 1 导入 PageNumberPagination 类
from rest_framework.pagination import PageNumberPagination
# 2 写一个类继承PageNumberPagination类
class CommonPageNumberPagination(PageNumberPagination):
page_size = 2 # 每页正常显示2条
page_query_param = 'page' # 查询页数时用的参数
page_size_query_param = 'size' # 更改每页显示的条数
max_page_size = 5 # 每页最多显示的条数 即使 size = 99999 也最多是5条
简单使用#
class NormalBookView(GenericViewSet, RetrieveModelMixin, ListModelMixin):
serializer_class = BookSerializer
queryset = Book.objects.all()
# 要注意 在设置分页器的时候不是一个列表!!!
pagination_class = CommonPageNumberPagination
LimitOffsetPagination偏移分页#
偏移的意思就是--->偏移到第几条 就从第几条数据开始查
重要的类属性#
- default_limit = api_settings.PAGE_SIZE (每页显示条数)
- limit_query_param = 'limit' (查询时用的参数)
- offset_query_param = 'offset' (offset偏移的查询参数)
- max_limit = None (每页最大显示条数)
基本定义#
class CommonLimitOffsetPagination(LimitOffsetPagination):
default_limit = 3 # 每页显示的条数
limit_query_param = 'limit' # 查询时使用的参数
offset_query_param = 'offset' # 偏移的参数
max_limit = '5' # 每页最大的显示条数
简单使用#
class NormalBookView(GenericViewSet, RetrieveModelMixin, ListModelMixin):
serializer_class = BookSerializer
queryset = Book.objects.all()
# 要注意 在设置分页器的时候不是一个列表!!!
pagination_class = CommonLimitOffsetPagination
CursorPagination游标分页#
重要的类属性#
- cursor_query_param = 'cursor' (查询条件)
- page_size = api_settings.PAGE_SIZE (每页显示条数)
- ordering = '-created' (排序)
- page_size_query_param = None (更改每页显示条数)
- max_page_size = None (每页最大显示条数)
使用#
# 1 写一个类,继承LimitOffsetPagination,重写4个类属性
class CommonCursorPagination(CursorPagination):
cursor_query_param = 'cursor'
page_size = 2
ordering = '-id'
page_size_query_param = 'offset'
max_page_size = 5
# 2 在视图类中配置写好的分页类
class BookAPIView(ViewSetMixin, ListAPIView):
queryset = models.Books.objects.all()
serializer_class = BookModelSerializer
pagination_class = CommonCursorPagination
优缺点#
# 优点:速度最快,数据量越大,越有优势(没有那么大的数据量,用的不多)
# 缺点:只能前一页和后一页,不能直接跳到某一页
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!