zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    20200726 千锤百炼软工人第二十一天
    20200725 千锤百炼软工人第二十天
    20200724 千锤百炼软工人第十九天
    20200723 千锤百炼软工人第十八天
    20200722 千锤百炼软工人第十七天
    20200721 千锤百炼软工人第十六天
    剑指Offer_#64_求1+2+…+n
    剑指Offer_#63_股票的最大利润
    剑指Offer_#62_圆圈中最后剩下的数字
    剑指Offer_#61_扑克牌中的顺子
  • 原文地址:https://www.cnblogs.com/wen-kang/p/9943838.html
Copyright © 2011-2022 走看看