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

posted @ 2022-10-31 23:36  凯宾斯基  阅读(79)  评论(0)    收藏  举报