一  分页器--准备

1.1  基本参数

  1. # 普通分页
  2. from rest_framework.pagination import PageNumberPagination
  3. # 偏移分页
  4. from rest_framework.pagination import LimitOffsetPagination
  5. # 加密分页
  6. from rest_framework.pagination import CursorPagination
  7.  
  8. class MyPageNumberPagination(PageNumberPagination):
  9. # 每页显示多少条
  10. page_size = 3
  11. # 查询的key,问号后面的key
  12. page_query_param = 'aa'
  13. # 指定当前页显示多少条
  14. page_size_query_param='size'
  15. # 每页最多显示多少条
  16. max_page_size=4

1.2  普通分页

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

1.3  偏移分页

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

1.4  加密分页

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

二  settings

  1. REST_FRAMEWORK = {
  2. # 每页显示两条
  3. 'PAGE_SIZE':2
  4. }

三  路由

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

rest_framework 之分页器的更多相关文章

  1. Django 之 rest_framework 分页器使用

    Django rest_framework 之分页器使用以及其源码分析 三种分页方式: 常规分页 -->PageNumberPagination 偏移分页 -->LimitOffsetPa ...

  2. Rest_framework之版本控制、响应器和分页器

    一.访问频率补充 频率: 自定义: 1 定义一个类MyThrottles allow_request(频率限制的逻辑) ==>这两个函数都是派生出来的,继承的类里面封装的. wait(返回一个数 ...

  3. rest_framework之三种分页器使用方法

      from rest_framework.pagination import PageNumberPagination,LimitOffsetPagination,CursorPagination ...

  4. drf框架之分页器的用法

    1. 分页器分为:简单分页器与偏移分页器和加密分页器 2.实现一个简单的分页器的用法: # 简单分页 # 第一步,导入分页类 # from rest_framework.pagination impo ...

  5. $Django importlib与dir知识,手写配置文件, 配置查找顺序 drf分页器&drf版本控制

    1  importlib与dir知识 # importlib简介动态导入字符串模块 # 常规导入 from ss.aa import b from ss import a print(b,type(b ...

  6. AI-响应式、分页器

    响应式 如果在setting配置下列,当只有BrowsableAPIRenderer时,只会返回浏览器页面:当配置成JSONRenderer,会返回json数据 REST_FRAMEWORK={ 'D ...

  7. 一.rest-framework之版本控制 二、Django缓存 三、跨域问题 四、drf分页器 五、响应器 六、url控制器

    一.rest-framework之版本控制 1.作用 用于版本的控制 2.内置的版本控制 from rest_framework.versioning import QueryParameterVer ...

  8. REST framwork之分页器,路由器,响应器

    一 REST framwork分页器: from rest_framework.pagination import PageNumberPagination,LimitOffsetPagination ...

  9. drf 认证、权限、限流、过滤、排序、分页器

    认证Authentication 准备工作:(需要结合权限用) 1. 需要使用到登陆功能,所以我们使用django内置admin站点并创建一个管理员. python manage.py creates ...

随机推荐

  1. 基于js白色简洁样式计算器

    今天给大家分享一款白色简洁样式计算器JS代码是一款精美简洁计算器JS代码插件网页特效,软件应用,后台应用JS计算器插件代码免费下载.适用浏览器:360.FireFox.Chrome.Safari.Op ...

  2. The Tao Of Programming翻译

    The Tao Of Programming里面有许多道家思想,我也喜欢道家学说, 萌生了用文言文翻译的想法,不足之处还请方家指正. 翻译后的文档放在gitcafe上了,欢迎大家fork修正.

  3. Farey Sequence(欧拉函数)

    题意:给出式子F F中分子分母互质,且分子小于分母 例: F2 = {1/2} F3 = {1/3, 1/2, 2/3} F4 = {1/4, 1/3, 1/2, 2/3, 3/4} F5 = {1/ ...

  4. elasticsearch安装与使用(1)-- centos7 elasticsearch的两种简单安装方法

    转自:http://www.cnblogs.com/miao-zp/p/6003160.html 简单修改 前言 elasticsearch(下面称为ES)是一个基于Lucene的搜索服务器(By 百 ...

  5. Linux快速定位并且杀掉占用端口的进程

    1.定位 lsof -i:8811(端口号) 2.杀掉进程 kill -9 63924

  6. make: *** [sapi/cli/php] Error 1 解决办法

    make: *** [sapi/cli/php] Error 1 一:考虑过make clean,问题依然 二:(采取此方法后出现启动apache报错:/usr/local/apache2/modul ...

  7. 我的vim 自动实例括号函数

    不废话,直接上代码: """"""""""""""" ...

  8. http常见的5个错误

    1. HTTP 500错误(内部服务器错误)对对HTTP 500错误的定义已经充分证明了这是一个最常见的HTTP错误. 一般来说,HTTP 500 错误就是web服务器发生内部错误时返回的信息. 例如 ...

  9. 数据库存入数据后id保持不变,或者直接报错

    数据库存入数据后id保持不变,且添加的数据一直在进行覆盖 或者直接报错 数据库存入数据后id保持不变,且添加的数据一直在进行覆盖 原因是: 之前注释掉了loadimage();在该函数中含有建立新的记 ...

  10. shrink-to-fit(自适应宽度)

    自适应宽度是指当未明白设定容器的宽度(或外边距设为auto)时,在特定的情况下容器的宽度会依据情况自行设定.而设定的结果往往并非我们想要的. W3C规范中描写叙述了几种shrink-to-fit的情况 ...