DRF 分页Pagination
分页Pagination
分页配置
REST framework提供了分页的支持。
在配置文件中设置全局的分页方式,如:
REST_FRAMEWORK = { 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination', 'PAGE_SIZE': 100 # 每页数目 }
class LargeResultsSetPagination(PageNumberPagination): page_size = 1000 page_size_query_param = 'page_size' max_page_size = 10000 class BookDetailView(RetrieveAPIView): queryset = Book.objects.all() serializer_class = BookSerializer pagination_class = LargeResultsSetPagination
注意:如果在视图内关闭分页功能,只需在视图内设置
pagination_class = None
前端访问网址形式:
GET http://api.example.org/books/?page=4
-
page_size 每页数目
-
page_query_param 前端发送的页数关键字名,默认为"page"
-
page_size_query_param 前端发送的每页数目关键字名,默认为None
-
max_page_size 前端最多能设置的每页数量
from rest_framework.pagination import PageNumberPagination class StandardPageNumberPagination(PageNumberPagination): page_size_query_param = 'page_size' max_page_size = 10 class BookListView(ListAPIView): queryset = Book.objects.all().order_by('id') serializer_class = BookSerializer pagination_class = StandardPageNumberPagination # 127.0.0.1/books/?page=1&page_size=2
前端访问网址形式:
GET http://api.example.org/books/?limit=100&offset=400
可以在子类中定义的属性:
-
default_limit 默认限制,默认值与
PAGE_SIZE
设置一致 -
limit_query_param limit参数名,默认'limit'
-
offset_query_param offset参数名,默认'offset'
-
max_limit 最大limit限制,默认None
from rest_framework.pagination import LimitOffsetPagination class BookListView(ListAPIView): queryset = Book.objects.all().order_by('id') serializer_class = BookSerializer pagination_class = LimitOffsetPagination # 127.0.0.1:8000/books/?offset=3&limit=2
本文作者:wang_longan
本文链接:https://www.cnblogs.com/longan-wang/p/15179359.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步