• rest_framework的分页器组件配置与使用


    分页器的局部使用:主要有两个分页器组件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
  • 相关阅读:
    HTTP的三次握手
    HTTP协议的发展历史
    二分图 (最大匹配 + 最小点覆盖 + 最少路径覆盖 + 最大独立集)
    昂贵的聘礼 POJ
    Cow Contest POJ 3660 (Floyed ) (最短路专题)
    B-number HDU
    You Are the One HDU
    0 or 1 HDU
    Trie树模板 + 例题
    The Shortest Path in Nya Graph HDU
  • 原文地址:https://www.cnblogs.com/wen-kang/p/9943838.html
Copyright © 2020-2023  润新知