REST framework:分页

REST framework提供了分页的支持

一、全局配置(不建议使用)

在配置文件中设置全局的分页方式:

REST_FRAMEWORK = {
    'DEFAULT_PAGINATION_CLASS':  'rest_framework.pagination.PageNumberPagination',
    'PAGE_SIZE': 10  # 每页数据量
}

二、局部配置

在不同的视图中可以通过pagination_clas属性来指定不同的分页器

1、自定义分页器

定义一个继承PageNumberPagination的类型,在子类中通过属性定义分页器的数据:

  • page_size 每页默认的数据条数
  • page_query_param 前端发送的页数关键字名,默认为"page"
  • page_size_query_param 前端发送的每页数目关键字名,默认为None
  • max_page_size 每页最多的数据条数
from rest_framework.pagination import PageNumberPagination


class UserInfoPagination(PageNumberPagination):
    # 默认每页数据量
    page_size = 10
    page_query_param = 'page'

    page_size_query_param = 'size'

    # 每页的数据量的最大值
    max_page_size = 100

2、使用分页器

class UserView(ModelViewSet):
    # 指定模型类查询集
    queryset = UserInfo.objects.all()
    # 指定序列化器类
    serializer_class = UserInfoSerializer

    # 指定分页器类
    pagination_class = UserInfoPagination

接口文档

 

postman查看

 

 

3、关闭分页功能

如果在视图内关闭分页功能,只需在视图内设置

pagination_class = None

 

三、分页器类型

1) PageNumberPagination
  • 前端访问网址形式:
    http://127.0.0.1:8000/students/?page=4

     

  • 子类中定义的属性:
    page_size 每页数目
    
    page_query_param 前端发送的页数关键字名,默认为"page"
    
    page_size_query_param 前端发送的每页数目关键字名,默认为None
    
    max_page_size 前端最多能设置的每页数量
2)LimitOffsetPagination
  • 前端访问网址形式:
    http://127.0.0.1:8000/students/?limit=100&offset=400
    可以在子类中定义的属性:
    default_limit 默认限制,默认值与PAGE_SIZE设置一直
    
    limit_query_param limit参数名,默认'limit'
    
    offset_query_param offset参数名,默认'offset'
    
    max_limit 最大limit限制,默认None

     

posted @ 2024-08-24 13:16  未来可期_Durant  阅读(15)  评论(0编辑  收藏  举报