rest_framework 之分页器
2024-08-21 15:01:57
一 分页器--准备
1.1 基本参数
# 普通分页
from rest_framework.pagination import PageNumberPagination
# 偏移分页
from rest_framework.pagination import LimitOffsetPagination
# 加密分页
from rest_framework.pagination import CursorPagination class MyPageNumberPagination(PageNumberPagination):
# 每页显示多少条
page_size = 3
# 查询的key,问号后面的key
page_query_param = 'aa'
# 指定当前页显示多少条
page_size_query_param='size'
# 每页最多显示多少条
max_page_size=4
1.2 普通分页
class Book(ViewSetMixin, APIView):
def get_all(self, request):
response = {'status': 100, 'msg': '查询成功'}
book_list = models.Book.objects.all()
# 实例化产生一个分页对象
# 不继承来修改对象的值
page=PageNumberPagination()
page.page_size=2
page.page_query_param='bb'
# page = MyPageNumberPagination()
# 第一个参数:要分页的数据,第二个参数request对象,第三个参数,当前视图对象
page_list = page.paginate_queryset(book_list, request, self)
# 再序列化的时候,用分页之后的数据
ser = mySer.BookSerializer(instance=page_list, many=True)
# response['data'] = ser.data
# return Response(response)
# 会带着链接,和总共的条数(不建议用)
return page.get_paginated_response(ser.data)
# return Response(ser.data)
1.3 偏移分页
# 偏移分页
from rest_framework.pagination import LimitOffsetPagination
class Book(ViewSetMixin, APIView):
def get_all(self, request):
response = {'status': 100, 'msg': '查询成功'}
book_list = models.Book.objects.all()
# 实例化产生一个偏移分页对象
page=LimitOffsetPagination()
page.default_limit=3
page.max_limit=5 page_list = page.paginate_queryset(book_list, request, self)
ser = mySer.BookSerializer(instance=page_list, many=True)
return Response(ser.data)
1.4 加密分页
from rest_framework.pagination import CursorPagination class Book(ViewSetMixin, APIView):
def get_all(self, request):
response = {'status': 100, 'msg': '查询成功'}
book_list = models.Book.objects.all()
# 实例化产生一个加密分页对象
page = CursorPagination()
page.ordering = 'nid' page_list = page.paginate_queryset(book_list, request, self)
ser = mySer.BookSerializer(instance=page_list, many=True)
return page.get_paginated_response(ser.data)
二 settings
REST_FRAMEWORK = {
# 每页显示两条
'PAGE_SIZE':2
}
三 路由
url(r'^books/$', views.Book.as_view()),
最新文章
- 配置iDempiere源码开发环境
- Basic motion detection and tracking with Python and OpenCV
- PostgreSQL的AnynonArray的例子
- SCALA编程实例
- Jquery 获取checkbox的checked问题
- jQuery中$.get()、$.post()和$.ajax()
- codeforces #261 C题 Pashmak and Buses(瞎搞)
- C语言中字符串如何转换为二进制、八进制、十进制、十六进制
- C#与lua相互调用
- hdu1003 Max Sum---最大子段和+记录开始结束点
- [SDOI 2011]染色
- 【笔记】Python基础一 :变量,控制结构,运算符及数据类型之数字,字符串,列表,元组,字典
- 安装Docker和配置加速器(二)
- python处理数据pandas视频资料
- SpringBoot 之 普通类获取Spring容器中的bean
- 【转】Android打印机--没有设备驱动sdk,自己实现USB打印功能
- 《高级Web应用程序设计》疑难杂症(201709011)
- 修改 CentOS 中的 repo
- Javascript 定时器的使用陷阱 (setInterval)
- Css3 实现关键帧动画