drf-分页器的使用
https://zhuanlan.zhihu.com/p/286671626
https://www.bilibili.com/video/BV1z64y197Dk?p=21&vd_source=caabcbd2a759a67e2a3de8acbaaf08ea
全局配置分页器
setting.py
REST_FRAMEWORK={
#全局分页设置
"DEFAULT_PAGINATION_CLASS":"rest_framework.pagination.PageNumberPagination",
"PAGE_SIZE":10 #每页显示的个数
}
然后视图哪里进行查询接口返回
代码可以参考:
https://www.cnblogs.com/kaibindirver/p/13264461.html (原始的查询数据库方法)
https://www.cnblogs.com/kaibindirver/p/16833059.html (封装的见这个)
发送请求 http://127.0.0.1:8000/book/?page=2&size=10
接口返回
{
"count": 30, #总数
"next": "http://127.0.0.1:8000/book/?page=3", #下一页的url
"previous": "http://127.0.0.1:8000/book/", #上一页的url
"results": [
{
"id": 15,
"title": "book10",
"price": 19,
"pub_date": "2020-12-12 00:00:00"
},
{
"id": 16,
"title": "book10",
"price": 19,
"pub_date": "2020-12-12 00:00:00"
},
{
"id": 17,
"title": "sanguo10",
"price": 191,
"pub_date": "2020-12-12 00:00:00"
},
{
"id": 18,
"title": "sanguo10",
"price": 191,
"pub_date": "2020-12-12 00:00:00"
},
{
"id": 19,
"title": "sanguo10",
"price": 191,
"pub_date": "2020-12-12 00:00:00"
},
{
"id": 20,
"title": "sanguo10",
"price": 191,
"pub_date": "2020-12-12 00:00:00"
},
{
"id": 21,
"title": "sanguo10",
"price": 191,
"pub_date": "2020-12-12 00:00:00"
},
{
"id": 23,
"title": "angu1o1",
"price": 1911131,
"pub_date": "2020-12-12 00:00:00"
},
{
"id": 24,
"title": "angu1o1",
"price": 1911131,
"pub_date": "2020-12-12 00:00:00"
},
{
"id": 25,
"title": "zzz",
"price": 1212,
"pub_date": "2022-12-01"
}
]
}
自定义局部分页器
views.py
# 自定义分页函数
from rest_framework.pagination import PageNumberPagination
class DIYPagination(PageNumberPagination):
page_size=10 #默认每页显示多少个数据
page_size_param='page_size22' #查询参数 默认为page
page_size_query_param="size" #前端控制每页展示个数 加参数&size=2
max_page_size=4 #前端控制每页展示个数 的限制数量 即&size 最大可设置为4
class BookView(ModelViewSet):
queryset = Book.objects.all()
serializer_class = BookSerializers
# 配置自定义的分页器
pagination_class = DIYPagination # 配置自定义的分页器
# #关闭分页设置
# pagination_class = None
发送请求例子 http://127.0.0.1:8000/book/?page=2&size=31

浙公网安备 33010602011771号