djangorestframework-jwt 分页器 三种
数据准备
# models
class Teacher(models.Model):
name = models.CharField(max_length=32)
salary = models.DecimalField(max_digits=5, decimal_places=2)
# objson
class TeacherJson(serializers.ModelSerializer):
class Meta:
model = models.Teacher
fields = '__all__'
# urls
url(r'^teachers/', views.Teachers.as_view()), # views
class Teachers(APIView):
def post(self, request):
list = []
for i in range(1, 51):
list.append(models.Teacher(name="%s老师" % i, salary=i))
models.Teacher.objects.bulk_create(list)
return Response({
'status': 0,
'msg': 'ok'
})
简单分页
from rest_framework.pagination import PageNumberPagination
class Teachers(APIView):
permission_classes = []
throttle_classes = []
throttle_classes = []
def get(self, request):
# 没有分页的所有数据
teacher_list = models.Teacher.objects.all() # 完成分页
# 1) 初始化分页对象
page_simple = PageNumberPagination() # 2) 配置分页对象
# page_simple.page_size = api_settings.PAGE_SIZE
# 一页显示的条数
page_simple.page_size = 5
# /teachers/?pages=3 默认page
page_simple.page_query_param = 'pages'
# /teachers/?pages=3&line=10 用户可以自定义访问一页有多少条数据
page_simple.page_size_query_param = 'line'
# 限制用户自定义一页最大能访问的条数
page_simple.max_page_size = 10 # 3) 操作分页后一页的数据
teacher_page_list = page_simple.paginate_queryset(teacher_list, request, self) # 将一页的数据序列化后返回给前台
teacher_data = objson.TeacherJson(teacher_page_list, many=True).data
return Response({
'status': 0,
'msg': 'ok',
'results': teacher_data
})
偏移分页
from rest_framework.pagination import LimitOffsetPagination
class Teachers(APIView):
def get(self, request):
teacher_list = models.Teacher.objects.all() # 完成分页
# 1) 初始化分页对象
page_limit = LimitOffsetPagination() # 2) 配置分页对象
# 一页显示的条数
page_limit.default_limit = 5
# 自定义一页获取的条数
page_limit.limit_query_param = 'limit'
# 从哪条数据开始查询
page_limit.offset_query_param = 'offset'
# 自定义最大获取一页的条数
page_limit.max_limit = 8 # 3) 操作分页数据
teacher_page_list = page_limit.paginate_queryset(teacher_list, request, self) teacher_data = objson.TeacherJson(teacher_page_list, many=True).data
return Response({
'status': 0,
'msg': 'ok',
'previous': page_limit.get_previous_link(), # 上一页
'next': page_limit.get_next_link(), # 下一页
'results': teacher_data
}) # return page_limit.get_paginated_response(teacher_data) # 内部提供的Response对象
游标分页
from rest_framework.pagination import CursorPagination
class Teachers(APIView):
def get(self, request):
teacher_list = models.Teacher.objects.all() # 完成分页
# 1) 初始化分页对象
page_cursor = CursorPagination() # 2) 配置分页对象
# 一页的条数
page_cursor.page_size = 10
# 排序的字段,可以正向也可以反向
page_cursor.ordering = '-id'
# 游标的关键字
page_cursor.cursor_query_param = 'cursor' # 3) 操作分页数据
teacher_page_list = page_cursor.paginate_queryset(teacher_list, request, self) teacher_data = objson.TeacherJson(teacher_page_list, many=True).data
return Response({
'status': 0,
'msg': 'ok',
'previous': page_cursor.get_previous_link(), # 上一页
'next': page_cursor.get_next_link(), # 下一页
'results': teacher_data
})
djangorestframework-jwt 分页器 三种的更多相关文章
- 2019年6月14日 Web框架之Django_07 进阶操作(MTV与MVC、多对多表三种创建方式、前后端传输数据编码格式contentType、ajax、自定义分页器)
摘要 MTV与MVC 多对多表三种创建方式 ajax ,前后端传输数据编码格式contentType 批量插入数据和自定义分页器 一.MVC与MTV MVC(Model View Controller ...
- DjangoRestFramework框架三种分页功能的实现 - 在DjangoStarter项目模板中封装
前言 继续Django后端开发系列文章.刚好遇到一个分页的需求,就记录一下. Django作为一个"全家桶"型的框架,本身啥都有,分页组件也是有的,但默认的分页组件没有对API开发 ...
- Django-REST-Framework JWT 实现SSO认证(上)
一.什么是Django-REST-Framework? Django-REST-framework 是基于Django框架的一个web RESTful风格开发的框架,它可以实现API接口的快速开发,但 ...
- struts2 Action 接收参数的三种方法
刚学Struts2 时 大家可能遇到过很多问题,这里我讲一下Action 接收参数的三种方法,我曾经在这上面摔过一回.所以要警醒一下自己..... 第一种:Action里声明属性,样例:account ...
- python 全栈开发,Day94(Promise,箭头函数,Django REST framework,生成json数据三种方式,serializers,Postman使用,外部python脚本调用django)
昨日内容回顾 1. 内容回顾 1. VueX VueX分三部分 1. state 2. mutations 3. actions 存放数据 修改数据的唯一方式 异步操作 修改state中数据的步骤: ...
- day77:luffy:导航栏的实现&DjangoRestFramework JWT&多条件登录
目录 1.导航栏的实现 2.登录前戏:用户表初始化 3.DjangoRestFramework JWT 4.多条件登录 5.登录状态的判断和退出登录 1.导航栏的实现 1.设计导航栏的model模型类 ...
- 简谈百度坐标反转至WGS84的三种思路
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 基于百度地图进行数据展示是目前项目中常见场景,但是因为百度地图 ...
- 测试一下StringBuffer和StringBuilder及字面常量拼接三种字符串的效率
之前一篇里写过字符串常用类的三种方式<java中的字符串相关知识整理>,只不过这个只是分析并不知道他们之间会有多大的区别,或者所谓的StringBuffer能提升多少拼接效率呢?为此写个简 ...
- Objective-C三种定时器CADisplayLink / NSTimer / GCD的使用
OC中的三种定时器:CADisplayLink.NSTimer.GCD 我们先来看看CADiskplayLink, 点进头文件里面看看, 用注释来说明下 @interface CADisplayLin ...
随机推荐
- QT--控件屏蔽鼠标点击事件
源博客:https://blog.csdn.net/qiufenpeng/article/details/81745266 最近学习QT写一个小界面想屏蔽鼠标点击,原来只要一个函数就搞定了. ui-& ...
- Redis5离线安装
1. 直接上redis官网安装包, 然后上传服务器 https://redis.io/download 2. 解压 tar -zxvf redis-5.0.6.tar.gz 3. 进入redis根目标 ...
- CALayer的mask属性
可以对图层按path进行指定裁剪 //#import "ViewController.h" // //@interface ViewController () // //@end ...
- 跨域共享cookie
1. JSP中Cookie的读写 Cookie的本质是一个键值对,当浏览器访问web服务器的时候写入在客户端机器上,里面记录一些信息.Cookie还有一些附加信息,比如域名.有效时间.注释等等. 下面 ...
- 【LeetCode 60】第k个排列
题目链接 [题解] 逆康托展开. 考虑康托展开的过程. K = ∑v[i]*(n-i)! 其中v[i]表示在a[i+1..n]中比a[i]小的数字的个数 (也即未出现的数字中它排名第几(从0开始)) ...
- 20 October in ss
Contest A: sum 快速读. B: 鬼谷子的钱袋(coin) 贪心. 按照类似二进制的方式准备钱袋:1, 2, 4, 8, ... 以此装入的钱袋数目记为 \(N\). 如果最后剩余不足以凑 ...
- 简单数学算法demo和窗口跳转,关闭,弹框
简单数学算法demo和窗口跳转,关闭,弹框demo <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&quo ...
- js常用方法和检查是否有特殊字符串和倒序截取字符串
js常用方法demo <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:/ ...
- Unzip 解压报错
$ jar xvf pcre-8.10.zip 如果出现 jar:Command not found 要用yum下载 $ yum -y install java-1.6.0-openjdk-d ...
- js判断客户端是pc还是移动端
navigator.userAgentNavigator 对象包含有关浏览器的信息.没有应用于 navigator 对象的公开标准,不过所有浏览器都支持该对象.userAgent 属性是一个只读的字符 ...