rest_framework之三种分页器使用方法
from rest_framework.pagination import PageNumberPagination,LimitOffsetPagination,CursorPagination
PageNumberPagination # 常用分页,查出所有,取部分
LimitOffsetPagination # 偏移分页,只能向前或者向后基于当前位置查
CursorPagination # 游标分页,一次只能上一页下一页,但效率极高
class PublishView(APIView):
versioning_class = URLPathVersioning
parser_classes=[JSONParser,]
def get(self,request,*args,**kwargs): # 第一种
#批量添加
# ll=[]
# for i in range(100):
# ll.append(models.Publish(name='%s出版社'%i,city='%s城市'%i))
#
# models.Publish.objects.bulk_create(ll)
#第一种方法,普通分页
#查询出所有数据
ret=models.Publish.objects.all()
#实例化产生一个普通分页对象
page=PageNumberPagination()
#每页显示多少条
page.page_size=3
#查询指定查询哪一页的key值
page.page_query_param='xxx' #前端控制每页显示多少条的查询key值比如size=9,表示一页显示9条
page.page_size_query_param='size'
#控制每页最大显示多少,size如果传100,最多也是显示10
page.max_page_size=10
ret_page=page.paginate_queryset(ret,request,self)
#序列化
pub_ser=serializer.PublishSerializers(ret_page,many=True)
#去setting中配置每页显示多少条 return Response(pub_ser.data) def get(self, request, *args, **kwargs): # 第二种
ret = models.Publish.objects.all()
# 实例化产生一个偏移分页对象
page = LimitOffsetPagination()
#四个参数:
#从标杆位置往后取几个,默认取3个,我可以指定
page.default_limit=3
#每次取得条数
page.limit_query_param='limit'
#标杆值,现在偏移到哪个位置,如果offset=6 表示当前在第6条位置上,往后取
page.offset_query_param='offset'
#最大取10条
page.max_limit=10 ret_page = page.paginate_queryset(ret, request, self)
# 序列化
pub_ser = serializer.PublishSerializers(ret_page, many=True)
# 去setting中配置每页显示多少条
return page.get_paginated_response(pub_ser.data)
# return Response(pub_ser.data) def get(self, request, *args, **kwargs): # 第三种
ret = models.Publish.objects.all()
# 实例化产生一个偏移分页对象
page = CursorPagination()
#三个参数:
#每页显示的大小
page.page_size=3
#查询的key值
page.cursor_query_param='cursor'
# 按什么排序
page.ordering='id' ret_page = page.paginate_queryset(ret, request, self)
# 序列化
pub_ser = serializer.PublishSerializers(ret_page, many=True)
# 去setting中配置每页显示多少条
return page.get_paginated_response(pub_ser.data)
# return Response(pub_ser.data)
rest_framework之三种分页器使用方法的更多相关文章
- Python爬虫之三种网页抓取方法性能比较
下面我们将介绍三种抓取网页数据的方法,首先是正则表达式,然后是流行的 BeautifulSoup 模块,最后是强大的 lxml 模块. 1. 正则表达式 如果你对正则表达式还不熟悉,或是需要一些提 ...
- (转载)Android之三种网络请求解析数据(最佳案例)
[置顶] Android之三种网络请求解析数据(最佳案例) 2016-07-25 18:02 4725人阅读 评论(0) 收藏 举报 分类: Gson.Gson解析(1) 版权声明:本文为博主原创 ...
- .Net MVC 导入导出Excel总结(三种导出Excel方法,一种导入Excel方法) 通过MVC控制器导出导入Excel文件(可用于java SSH架构)
.Net MVC 导入导出Excel总结(三种导出Excel方法,一种导入Excel方法) [原文地址] 通过MVC控制器导出导入Excel文件(可用于java SSH架构) public cl ...
- .NET中常用的几种解析JSON方法
一.基本概念 json是什么? JSON:JavaScript 对象表示法(JavaScript Object Notation). JSON 是一种轻量级的数据交换格式,是存储和交换文本信息的语法. ...
- IOS开发-几种截屏方法
IOS开发-几种截屏方法 1. UIGraphicsBeginImageContextWithOptions(pageView.page.bounds.size, YES, zoomSc ...
- C语言的几种取整方法
C语言的几种取整方法 来源:http://blog.sina.com.cn/s/blog_4c0cb1c001013ha9.html 1.直接赋值给整数变量.如: int i = 2.5; 或 i = ...
- 24种设计模式--模版方法模式【Template Method Pattern】
周三,9:00,我刚刚坐到位置,打开电脑准备开始干活.“小三,小三,叫一下其它同事,到会议室,开会”老大跑过来吼,带着淫笑.还不等大家坐稳,老大就开讲了,“告诉大家一个好消息,昨天终于把牛叉模型公司的 ...
- VB几种函数参数传递方法,Variant,数组,Optional,ParamArray
VB几种函数参数传递方法,Variant,数组,Optional,ParamArray 一) 过程的参数被缺省为具有 Variant 数据类型. 1)ByRef按 地址传递参数在 VB 中是缺省的 按 ...
- iOS中常用的四种数据持久化方法简介
iOS中常用的四种数据持久化方法简介 iOS中的数据持久化方式,基本上有以下四种:属性列表.对象归档.SQLite3和Core Data 1.属性列表涉及到的主要类:NSUserDefaults,一般 ...
随机推荐
- Oracle 控制文件损坏解决方案
Oracle 控制文件损坏解决方案 故障一:丢失(损坏)一个控制文件 前台报错:ORA-00205:error in identifying control file,check alert log ...
- Linux 文件系统缓存dirty_ratio与dirty_background_ratio两个参数区别
文件系统缓存dirty_ratio与dirty_background_ratio两个参数区别 (2014-03-16 17:54:32) 转载▼ 标签: linux 文件系统缓存 cache dirt ...
- RabbitMQ持久化和非持久化
但是,非持久化要比持久化速度更快. 队列是否需要持久化:看需求
- 为什么final类型map和list内容可以修改
URL地址:https://blog.csdn.net/AlbertFly/article/details/76855367
- avalon background-image写法
ms-css="{backgroundImage: 'url('+reportdata.avatar + ')'}"
- Mysql之数据库设计规范
1. 三大范式首先要明白”范式(NF)”是什么意思.按照教材中的定义,范式是“符合某一种级别的关系模式的集合,表示一个关系内部各属性之间的联系的合理化程度”.数据库范式也分为1NF,2NF,3NF,B ...
- elasticsearch配置jdk
编辑bin/elasticsearch 可以看到elasticsearch使用环境变量JAVA_HOME中配置的jdk:if [ -x "$JAVA_HOME/bin/java" ...
- deepin 删除文件后目录不刷新解决方案
调整最大文件监控数量 sudo vim /etc/sysctl.conf 添加参数 fs.inotify.max_user_watches = 运行使配置生效 sudo /sbin/sysctl -p ...
- java定时案例
好久没写笔记了,变懒了! java定时运行的三个案例: 一, 通过sleep方法来达到定时任务的效果 public class testTime { public static void main(S ...
- 学习笔记:Linux下共享内存的方式实现进程间的相互通信
一.常用函数 函数系列头文件 #include <sys/types.h> #include <sys/ipc.h> #include <sys/shm.h> ft ...