Django drf分页器的使用详解
前言
当后台返回的数据过多时,我们就要配置分页器,比如一页最多只能展示10条等等,drf
中默认配置了3个分页面
- PageNumberPagination:基础分页器,性能略差
- LimitOffsetPagination:偏移分页器
- CursorPagination:游标分页器,性能强大
PageNumberPagination
基础分页器PageNumberPagination
,数据量越大性能越差。
首先我们在app
中创建一个pagination.py
文件,然后自定义一个分页器类,继承自PageNumberPagination
:
from rest_framework.pagination import PageNumberPagination class MyPageNumberPagination(PageNumberPagination): """ 普通分页,数据量越大性能越差 """ # 默认页面展示的条数 page_size = 3 # 前端访问url需要添加 ?page=页码 page_query_param = 'page' # 用户自定义返回的条数,格式?page_size=页数 page_size_query_param = "page_size" # 用户自定义返回的条数最大限制,数值超过5也只展示5条 max_page_size = 5
如果我们需要局部配置则在类视图中访问使用pagination_class = MyPageNumberPagination
即可
如果是全局配置,则在settings.py
文件中配置如下:
REST_FRAMEWORK = { 'DEFAULT_PAGINATION_CLASS': 'api.pagination.MyPageNumberPagination', }
之后我们访问url
只需在后面加入?page=页码数
即可
比如http://127.0.0.1:8000/api/cars/?page=2
,代表访问第二页的数据,数据的条数默认为page_size
的值
比如http://127.0.0.1:8000/api/cars/?page=2&page_size=5
,代表访问第二页的数据,用户自定义返回的条数为5条
LimitOffsetPagination
首先我们自定义一个分页器类,继承自LimitOffsetPagination
:
class MyLimitOffsetPagination(LimitOffsetPagination): # url后面跟limit请求参数, limit_query_param = 'limit' # url后面跟offset请求参数 offset_query_param = 'offset' # 最大限制20条 max_limit = 20 # 默认限制3条 default_limit = 3
之后我们访问url
只需要在后面加入?limit=10
即可
比如http://127.0.0.1/api/cars/?limit=10
代表访问的数据最多展示10条,如果你limit
的值>max_limit
,那么还是按照max_limit
的值来展示数据的条数
比如http://127.0.0.1/api/cars/?offset=1
,这里没有limit
参数,所以默认展示3条,offset=1
代表从数据库列表中提取数据的时候,是从下标1开始提取,比如提取的数据列表是['test1', 'test2', 'test3', 'test4']
,本来我们默认提取前3条,但是你加上offset=1
后,他是从列表下标为1开始提取,所以最后提取的数据是test2
和test3
和test4
CursorPagination
游标分页器跟基础分页器用法差不多,只是游标分页的针对下一页数据的url
进行了加密
首先我们自定义一个分页器类,继承自CursorPagination
:
class MyCursorPagination(CursorPagination): """ Cursor 光标分页 性能高,安全 """ page_size = 10 page_size_query_param = "page_size" max_page_size = 20 ordering = '-price'
如果我们视图中使用了排序过滤filter_backends = [OrderingFilter]
,那么我们在访问url
的时候必须携带参数?ordering=需要排序的字段
。
以上就是Django drf分页器的使用的详细内容,更多关于Django drf分页器的资料请关注脚本之家其它相关文章!
相关文章
TensorFlow 输出checkpoint 中的变量名与变量值方式
今天小编就为大家分享一篇TensorFlow 输出checkpoint 中的变量名与变量值方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-02-02详解python函数传参传递dict/list/set等类型的问题
这篇文章主要介绍了详解python函数传参传递dict/list/set等类型的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2021-04-04Python argparse命令参数与config配置参数示例深入详解
这篇文章主要介绍了Python argparse命令参数与config配置参数,argparse是Python内置的一个用于命令项选项与参数解析的模块,通过在程序中定义好我们需要的参数,然后在程序启动命令行传递我们想要改变的参数2023-03-03Python数据可视化之使用matplotlib绘制简单图表
这篇文章主要为大家详细介绍了使用matplotlib绘制简单图表的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助2022-03-03
最新评论