zoukankan      html  css  js  c++  java
  • DRF分页器

     简单分页器:PageNumberPagination

    from rest_framework.pagination import PageNumberPagination
    class SimplePage(PageNumberPagination):
        # #每页显示记录数,前端没有传入page_num,则默认显示此参数
        page_size = 3
        #url链接参数,如;http://127.0.0.1:8000/api/books/?page=3
        page_query_param = 'page'
        #前端传入每页显示条数
        page_size_query_param = 'size'
        # 后端控制每页显示最大记录数
        max_page_size = 5

    偏移分页器:LimitOffsetPagination

    from rest_framework.pagination import LimitOffsetPagination
    class LimitPage(LimitOffsetPagination):
        default_limit = 3  # 每页条数
        limit_query_param = 'limit' # 往后拿几条
        offset_query_param = 'offset' # 标杆
        max_limit = 5   # 后台控制显示的最大条数防止前台输入数据过大
        # http://127.0.0.1:8000/api/books/?limit=5&offset=3  表示显示第4条开始,往下显示5条记录

    加密分页器:CursorPagination

    from rest_framework.pagination import CursorPagination
    class CursorPage(CursorPagination):
        #每页显示条数
        page_size = 3
        #页数关键词
        cursor_query_param = 'page'
        #后台允许显示的最大条数
        max_page_size = 5
        #安装id号降序排序
        ordering = '-id'
        #http://127.0.0.1:8000/api/books/?page=cD02

    结果实例

    使用方法:

    #继承APIview的视图类中使用
    class BookView(APIView):
        def get(self,request,*args,**kwargs):
            books = models.Book.objects.all().filter(is_delete=False)
            # 简单分页
            # page=SimplePage()
            # 偏移分页器
            # page=LimitPage()
            # 加密分页器
            page = CursorPage()
            page_list = page.paginate_queryset(books, request, view=self) #获取分页内容
            # 下一页
            next_page = page.get_next_link()
            # 上一页
            per_page = page.get_previous_link()
            #对分页的内容进行序列化
            books_ser = ser.BookModelser(instance=page_list, many=True)
            # books_ser=ser.BookModelser(books,many=True)
            # 用分页器封装的响应
            return page.get_paginated_response(books_ser.data)
    #继承视图子类的视图中使用
    pagination_class=分页类(我们自己重写的,可以修改字段)

    全局配置

    REST_FRAMEWORK = {
        'DEFAULT_PAGINATION_CLASS':  'rest_framework.pagination.PageNumberPagination',
        'PAGE_SIZE': 100  # 每页数目
    }
  • 相关阅读:
    ZOJ 3705 Applications
    UVA 220 Othello
    HDU 2084 数塔
    第五章:变量
    第四章:注释
    第三章:程序结构
    第二章:项目的创建和环境熟悉
    第一章:c#开发环境安装
    处理字段串
    查询表的列信息
  • 原文地址:https://www.cnblogs.com/nq31/p/13951717.html
Copyright © 2011-2022 走看看