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

    一  分页器--准备

    1.1  基本参数

    # 普通分页
    from rest_framework.pagination import PageNumberPagination
    # 偏移分页
    from rest_framework.pagination import LimitOffsetPagination
    # 加密分页
    from rest_framework.pagination import CursorPagination
    
    class MyPageNumberPagination(PageNumberPagination):
        # 每页显示多少条
        page_size = 3
        # 查询的key,问号后面的key
        page_query_param = 'aa'
        # 指定当前页显示多少条
        page_size_query_param='size'
        # 每页最多显示多少条
        max_page_size=4

    1.2  普通分页

    class Book(ViewSetMixin, APIView):
        def get_all(self, request):
            response = {'status': 100, 'msg': '查询成功'}
            book_list = models.Book.objects.all()
            # 实例化产生一个分页对象
            # 不继承来修改对象的值
            page=PageNumberPagination()
            page.page_size=2
            page.page_query_param='bb'
            # page = MyPageNumberPagination()
            # 第一个参数:要分页的数据,第二个参数request对象,第三个参数,当前视图对象
            page_list = page.paginate_queryset(book_list, request, self)
            # 再序列化的时候,用分页之后的数据
            ser = mySer.BookSerializer(instance=page_list, many=True)
            # response['data'] = ser.data
            # return Response(response)
            # 会带着链接,和总共的条数(不建议用)
            return page.get_paginated_response(ser.data)
            # return Response(ser.data)

    1.3  偏移分页

    # 偏移分页
    from rest_framework.pagination import LimitOffsetPagination
    class Book(ViewSetMixin, APIView):
        def get_all(self, request):
            response = {'status': 100, 'msg': '查询成功'}
            book_list = models.Book.objects.all()
            # 实例化产生一个偏移分页对象
            page=LimitOffsetPagination()
            page.default_limit=3
            page.max_limit=5
    
    
            page_list = page.paginate_queryset(book_list, request, self)
            ser = mySer.BookSerializer(instance=page_list, many=True)
            return Response(ser.data)

    1.4  加密分页

    from rest_framework.pagination import CursorPagination
    
    
    class Book(ViewSetMixin, APIView):
        def get_all(self, request):
            response = {'status': 100, 'msg': '查询成功'}
            book_list = models.Book.objects.all()
            # 实例化产生一个加密分页对象
            page = CursorPagination()
            page.ordering = 'nid'
    
            page_list = page.paginate_queryset(book_list, request, self)
            ser = mySer.BookSerializer(instance=page_list, many=True)
            return page.get_paginated_response(ser.data)

    二  settings

    REST_FRAMEWORK = {
        # 每页显示两条
        'PAGE_SIZE':2
    }

    三  路由

    url(r'^books/$', views.Book.as_view()),

     

  • 相关阅读:
    有价值的终会被人发现和承认
    Sql中存在斜杠“/”怎么办?
    JSONObject和JSONArray(json-lib-2.4)的基本用法
    如何设定linux系统时间
    动态创建的文本框想要加上jQuery的datepicker功能变成日期选择控件该怎么办?
    如果$.ajax函数迟迟得不到响应,那么最有可能出错的地方是请求参数写错了
    Notepad2替代系统自带的记事本Notepad
    css属性与js中style对象的属性对应表
    day02_js学习笔记_01_js的简介、js的基本语法
    Eclipse/MyEclipse的快捷键以及文档注释、多行注释的快捷键
  • 原文地址:https://www.cnblogs.com/zhaijihai/p/10138990.html
Copyright © 2011-2022 走看看