DRF分页接口(三种分类)

DRF分页接口

PageNumberPagination(基本分页类)

  • 特点
    • 基于页码的分页方式,适用于固定大小的数据集
    • 使用页码和每页显示数量来进行分页
    • 传统的分页方式,用户可以通过页码进行导航

LimitOffsetPagination(偏移分类)

  • 特点
    • 基于偏移和限制的分页方式,常用于小型数据集
    • 使用 limitoffset 参数进行分页控制
    • 需要提供数据总量,可以直接跳转到指定位置

CursorPagination(游标分页)

  • 特点
    • 基于数据库游标的分页,适用于大型数据集,性能更高
    • 使用数据库中的游标位置来确定下一页和上一页的数据
    • 不需要知道总数据量,适用于动态数据或实时更新的数据

实战

使用方式:

  • 自定义类,继承某个分页类
  • 在视图类中配置:必须继承GenericAPIView

分页类

  • CursorPagination:基本分页类
  • LimitOffsetPagination:偏移分类
  • PageNumberPagination:游标分页
# MyPagination.py
from rest_framework.pagination import CursorPagination, LimitOffsetPagination, PageNumberPagination


# 1.基本分页
class CommonPageNumberPagination(PageNumberPagination):
    # 定制类属性
    page_size = 2  # 每页显示2条
    page_query_param = 'page'  # http://127.0.0.1:8008/publish/?page=2  当前页数
    page_size_query_param = 'size'  # http://127.0.0.1:8008/publish/?page=2&size=3 每页显示条数
    max_page_size = 10  # 每页最多显示10条
    # http://127.0.0.1:8008/publish/?page=2 查询第二页,每页显示2条
    # http://127.0.0.1:8008/publish/?page=1&size=5查询第一页,每页显示5


# 2.limit  offset分页方式  偏移分页

class CommonLimitOffsetPagination(LimitOffsetPagination):
    default_limit = 2  # 每页显示两条
    # http://127.0.0.1:8008/publish/?limit=4  一页显示四条
    limit_query_param = 'limit'  # 控制每页显示多少条
    # http://127.0.0.1:8008/publish/?offset=3  从第3条开始,取两条
    # http://127.0.0.1:8008/publish/?offset=3&limit=1  从第3条开始,取1条
    offset_query_param = 'offset'  # 偏移量
    max_limit = 10  # 最大每页取10条


# 3.游标分页,必须要排序,且只能取上一页和下一页不能直接跳转
# 效率高,大数据量和app端推荐使用
class CommonCursorPagination(CursorPagination):
    cursor_query_param = 'cursor'  # 查询条件  http://127.0.0.1:8008/publish/?cursor=asfasf
    page_size = 2
    ordering = 'id'

使用

# views.py
class publish(GenericViewSet, ListModelMixin,CreateModelMixin):
    queryset = models.Publish.objects.all()
    serializer_class = PublishSerializer
    # pagination_class = CommonPageNumberPagination # 分页方式只能选择一种
    # pagination_class = CommonLimitOffsetPagination # 分页方式只能选择一种
    pagination_class = CommonCursorPagination  # 分页方式只能选择一种
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值