分页器的局部使用:主要有两个分页器组件PageNumberPagination, LimitOffsetPagination
对指定的数据表类进行分页
先自定义分页器类,该类可以继承两个分页器中的任何一个,然后重写要自定义的配置属性 ,实例代码如下:
1 from rest_framework.pagination import PageNumberPagination,LimitOffsetPagination
2 class MyPage(PageNumberPagination):
3 page_size = 2 #分页显示的记录条数
4 page_query_param = "page" #分页的检索字段
5 page_size_query_param ="size" #页码数字段
6 max_page_size = 3 #最大显示记录数
分页器是选择性使用的:
1 class MyLim(LimitOffsetPagination):
2 default_limit = 1
3 max_limit = 3
分页器类创建完成后,可以加入视图类里
可以在视图类的list查询所有数据对应的方法下去写(重写list方法):
1 class BookShow(viewsets.ModelViewSet):
2
3 queryset = Book.objects.all()
4 serializer_class = BookModelSerializers
5 def list(self, request, *args, **kwargs):
6 # print(request.user)
7 # print(request.auth)
8 book_list=Book.objects.all()
9 mp=MyPage() #实例化一个分页器对象
10 book_page=mp.paginate_queryset(book_list,request,self)
11
12
13 bs=BookModelSerializers(book_page,many=True,context={"request":request})
14 return Response(bs.data)
也可以直接用rest_farmwork内部配置好的方法去实现分页,本质上它只是需要我们去指定要使用的分页器类
1 class PublishDeteal(viewsets.ModelViewSet):
2 queryset = Publish.objects.all()
3 serializer_class = PublishShowSerializers
4 pagination_class=MyPage
它能获取这个配置信息,便能实现分页。
*******************************************************************************
全局分页本质上和认证权限频率组件是一样的,在settings里面的REST_FARMWORK字典里面配置
# "PAGE_SIZE":3