zoukankan      html  css  js  c++  java
  • drf之分页器

    一、简介:drf内置了三种分页器类,一般需要重写类继承默认的分页器类来定制属性的具体数值。

    二、PageNumberPagination

      1、路径:rest_framework.pagination.PageNumberPagination。

      2、重写类:

    class NewPageNumberPagination(PageNumberPagination):
        page_size=5  # 每页显示的条数
        page_query_param='to_page'  # 跳转第几页的键,不定义则默认使用'page'
        page_size_query_param='size'# 设置每页条数的键
        max_page_size=10  # 每页最大显示条数

      3、url:.../?to_page=3&size=6,代表<跳转至第3页,每页显示6条数据>。

      4、特性:每页显示固定的条数。

    三、LimitOffsetPagination

      1、路径:rest_framework.pagination.LimitOffsetPagination。

      2、重写类:

    class NewLimitOffsetPagination(LimitOffsetPagination):
        default_limit = 5  # 当前页默认显示的条数
        offset_query_param = 't_offset'  # 设置基点的键,不定义则使用默认的'offset'
        limit_query_param = 't_limit'  # 设置当前页显示条数的键,不定义则使用默认的'limit'
        max_limit = 10  # 每页最大显示条数

      3、url:.../?t_offset=3&t_limit=6,代表<从第4条数据开始,显示6条数据>。

      4、特性:可以定位到具体第几条数据。

    四、CursorPagination

      1、路径:rest_framework.pagination.CursorPagination。

      2、重写类:  

    class NewCursorPagination(CursorPagination):
        page_size = 5  # 每页显示的条数
        cursor_query_param = 't_cursor'  # 设置指针位置的键,不定义则使用默认的'cursor'
        ordering = '-id'  # 排序参照的字段,负号代表反序

      3、url:.../?t_cursor=xxxxxxx。

      4、特性:无法定位,只能前进或者后退,但是速度快。

    五、使用分页器

      1、继承了ListAPIView的情况:

    class TarView(ListAPIView):
        queryset = models.Tar.objects.all()
        serializer_class = TarModelSerializer
        pagination_class = NewCursorPagination  # 配置所用的分页器

      2、继承了APIView的情况:

    class TarView(APIView):
        def get(self,request,*args,**kwargs):
            book_list=models.Book.objects.all()
            page_cursor=NewPageNumberPagination()  # 获取分页器对象
            book_list=page_cursor.paginate_queryset(book_list,request,view=self)
            next_url =page_cursor.get_next_link()
            pr_url=page_cursor.get_previous_link()
            book_ser=BookModelSerializer(book_list,many=True)
            return Response(data={
                'pr_url': pr_url,
                'next_url': next_url,
                'data': book_ser.data
            })
  • 相关阅读:
    java获取当前项目或类路径
    java转义字符处理——“\”替换为“/”
    OpenModelica 在特定目录下生成仿真结果文件
    Eclipse常用设置
    java反编译器
    OMShell常用命令及遇到的问题
    Java中的单实例
    Eclipse常用设置
    Eclipse快捷键
    vlookup+match高亮显示行
  • 原文地址:https://www.cnblogs.com/caoyu080202201/p/13294446.html
Copyright © 2011-2022 走看看