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
  • 相关阅读:
    规矩与管理
    信息系统叫设施比叫工具更贴近本义
    让ansbile和docker愉快的在一起
    elasearch基础教程
    markdown语法
    python 实用pickle序列化
    python 解析配置文件
    ansible状态管理
    haproxy官方配置文档地址
    ansible操作模块相关
  • 原文地址:https://www.cnblogs.com/wen-kang/p/9943838.html
Copyright © 2011-2022 走看看