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