drf分页器

1.第一种分页:
类似于django中的分页
2.第二种分页:
偏移分页
3.第三种分页:
加密分页(查询速度快)
无法跳跃

基本参数

from rest_framework.pagination import PageNumberPagination,LimitOffsetPagination,CursorPagination

page_size #每页显示的数量

page_query_param = 'page'  #/?page=2 查询的key

#指定当前页显示多少条
page_size_query_param#/?page=2&size=5 取第2页,显示5条 #当前页显示最多条数
max_page_size

第一种分页

from rest_framework.pagination import PageNumberPagination,LimitOffsetPagination,CursorPagination

#实例化产生一个分页对象
page = PageNumberPagination() #第一个参数:要分页的数据,第二个参数,request,第三个参数,当前视图对象
page_list = page.paginate_queryset(book_list,request,self)#self为视图 #再序列化的时候,用分页之后的数据
ser = Myserializer(instance=page_list,many=True)
paginate_queryset

第二种分页,偏移分页

#默认每页显示多少
default_limit = 2 #标杆 /?offset=2&limit=3 以2位基础,显示3条 offset_query_param='offset' limit_query_param = 'limit' #每页显示的最大条数
max_limit = 5 from rest_framework.pagination import LimitOffsetPagination #实例化产生一个分页对象
page = LimitOffsetPagination() #第一个参数:要分页的数据,第二个参数,request,第三个参数,当前视图对象
page_list = page.paginate_queryset(book_list,request,self)#self为视图 #再序列化的时候,用分页之后的数据
ser = Myserializer(instance=page_list,many=True)
paginate_queryset

第三种分页(加密分页)

#按nid排序
page.ordering = 'nid'
#查询的key值
cursor_query_param = 'cursor'
#每页显示多少条
page_size = 2

使用

1.生成对象(可以修改对象的属性)
2.ret = 对象.paginate_queryset()
3.丢到序列化类中,完成序列化

修改默认参数的两种方法

1.自定义分页类,继承PageNumberPagination
2.产生page = PageNumberPagination()对象后
page.page_size=5
page.page_query_param = 'size'

练习

from rest_framework.pagination import PageNumberPagination,LimitOffsetPagination,CursorPagination
from rest_framework.views import APIView
from django.http import JsonResponse
class Infos(APIView):
def get(self,request,*args,**kwargs):
res_page = int(request.query_params.get('page',0))
conn = get_redis_connection()
obj_li = []
for key,value in conn.hscan_iter('dic1',count=1000):
k =key.decode('utf-8')
v = value.decode('utf-8')
obj_li.append({k:v})
page = PageNumberPagination()
page.page_size = 120
max_page =int(len(obj_li)/page.page_size)
if res_page > max_page:
return HttpResponse('超过最大页数')
page_list = page.paginate_queryset(obj_li,request,self)
return JsonResponse(page_list,safe=False)

drf分页器的更多相关文章

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

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

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

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

  3. Django(68)drf分页器的使用

    前言 当后台返回的数据过多时,我们就要配置分页器,比如一页最多只能展示10条等等,drf中默认配置了3个分页面 PageNumberPagination:基础分页器,性能略差 LimitOffsetP ...

  4. drf过滤器、分页器、筛选器的应用

    一.drf 提供的过滤器(ordering) views.py from rest_framework.generics import ListAPIView from . import models ...

  5. Django框架深入了解_04(DRF之url控制、解析器、响应器、版本控制、分页)

    一.url控制 基本路由写法:最常用 from django.conf.urls import url from django.contrib import admin from app01 impo ...

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

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

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

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

  8. DRF(5) - 频率组件、url注册器、响应器、分页器

    一.频率组件 1.使用DRF简单频率控制实现对用户进行访问频率控制 1)导入模块,定义频率类并继承SimpleRateThrottle # 导入模块 from rest_framework.throt ...

  9. DRF之注册器响应器分页器

    概要 url注册器 响应器 分页器 url注册器 通过DRF的视图组件,数据接口逻辑被我们优化到最剩下一个类,接下来,我们使用DRF的url控制器来帮助我们自动生成url,使用步骤如下: 第一步:导入 ...

随机推荐

  1. Codeforces Round #431 (Div. 2) C

    From beginning till end, this message has been waiting to be conveyed. For a given unordered multise ...

  2. devOps开发(Web API 实例)dotnet core 和 Azure PaaS服务

    使用 dotnet core 和 Azure PaaS服务进行devOps开发(Web API 实例) 作者:陈希章 发表于 2017年12月19日 引子 这一篇文章将用一个完整的实例,给大家介绍如何 ...

  3. 关于rabbitmq的消息路由的同步问题

    http://www.cnblogs.com/me-sa/archive/2012/11/12/rabbitmq_ram_or_disk_node.html我是看了上面的博客明白了一些原理的,我之前一 ...

  4. 编写SQL语句操作数据库(慕课SQLite笔记)

    安卓常用数据存储方式之一SQLite学习及操作笔记 0.视频地址:http://www.imooc.com/video/3382 1.每个程序都有自己的数据库 默认情况下是各自互不干扰 1)创建一个数 ...

  5. UIWebView全解

    是iOS内置的浏览器控件,可以浏览网页.打开文档等 能够加载html/htm.pdf.docx.txt等格式的文件 系统自带的Safari浏览器就是通过UIWebView实现的 MIME的英文全称是“ ...

  6. ftp和sftp

    一.ftp ftp是文件传输协议,ftp协议包括两部分,一个是ftp客户端,另一个是ftp服务器. 原理:一般情况下,当使用FTP服务的时候,我们都知道默认是21号端口,其实还有一个20号端口.FTP ...

  7. CAS 配置NLB 负载均衡网络无法连接

    在虚拟机与虚拟机.虚拟机与实机之间利用Windows操作系统自带的网络负载均衡功能如选择单播集群模式,网络就无法通讯,NLB不成功. Scenario #1 在虚拟机与虚拟机之间选择多播模式NLB可正 ...

  8. SAP GUI里Screen Painter的工作原理

    我们在SAP GUI里双击一个screen编号: 单击Layout按钮可以打开Screen Painter: 这背后的工作原理是什么? 是这个RFC destination在起作用: Connecti ...

  9. Python:numpy数组转换为json格式

    在python中,如何将一个numpy数组转换为json格式? 这是最近遇到的一个问题,做个笔记. 假设arr为numpy数组,将其转换为json格式: 总体思想是①首先转换为python的list, ...

  10. [uestc oj]H - 邱老师选妹子

    H - 邱老师选妹子 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submi ...