9-1 分页-DRF分页
目录:
- 分页介绍
- 普通分页
- 切割分页
- 加密分页
一、分页介绍
当对于数据量的大的时候,我们在一个页面显示不下,这个时候我们就需要采用分页的操作。
分页方式:
- 普通分页:看第 n 页,每页显示 m 条数据;
- 切割分页:在 n 个位置,向后查看 m 条数据;
- 加密分页:这与普通分页方式相似,不过对 URL 中的请求页码进行 加密。
前提:我们需要在我们的app应用中新建一个 文件,mypagenumberpaginations 然后在我们的settings.py文件中导入:
REST_FRAMEWORK = {
....
#分页
'DEFAULT_PAGINATION_CLASS': 'app06.mypagenumberpaginations.MyPageNumberPagination' #app06:app名,mypagenumberpaginations:新建文件名,MyPageNumberPagination:类名
}
目录结构如下:
...
-app06
-migrations
...
-admin.py
-apps.py
-models.py
-mypagenumberpaginations.py #新建
....
...
二、普通分页
说明:在mypagenumberpaginations.py 新增 MyPageNumberPagination,因为在settings.py全局配置了,所以所有 视图都有效。
from rest_framework.pagination import PageNumberPagination
class MyPageNumberPagination(PageNumberPagination):
page_size = 2
max_page_size = 2
page_size_query_param = 'size'
page_query_param = 'page'
'''
page_query_param:表示url中的页码参数
page_size_query_param:表示url中每页数量参数
page_size:表示每页的默认显示数量
max_page_size:表示每页最大显示数量,做限制使用,避免突然大量的查询数据,数据库崩溃
'''
效果图:
表示:page=2表示 第2页,size:页数显示的大小为1。因为我们的size显示的为2,所以我们还有一条数据。

三、切割分页
说明:切割方式就是采用offset方式。
from rest_framework.pagination import LimitOffsetPagination
class MyPageNumberPagination(LimitOffsetPagination):
default_limit = 2
limit_query_param = 'limit'
offset_query_param = 'offset'
max_limit = 5
'''
default_limit:表示默认每页显示几条数据
limit_query_param:表示url中本页需要显示数量参数
offset_query_param:表示从数据库中的第几条数据开始显示参数
max_limit:表示每页最大显示数量,做限制使用,避免突然大量的查询数据,数据库崩溃
'''
效果图:

四、加密分页
说明:加密分页跟普通分页差不多,只是page采用加密的方式。
from rest_framework.pagination import CursorPagination
class MyPageNumberPagination(CursorPagination):
cursor_query_param = 'cursor'
page_size = 1
ordering = 'id'
page_size_query_param = 'size'
max_page_size = 1
'''
cursor_query_param:表示url中页码的参数
page_size_query_param:表示每页显示数据量的参数
max_page_size:表示每页最大显示数量,做限制使用,避免突然大量的查询数据,数据库崩溃
ordering:表示返回数据的排序方式
'''
效果图:


浙公网安备 33010602011771号