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 ...
随机推荐
- boost graph
Boost Graph provides tools to work with graphs. Graphas are two-dimensional point clouds with any nu ...
- createElement 函数
我们知道,vue函数的渲染其实是由render函数的回调函数createElement 来创建的虚拟dom,那么它到底是怎么创建组件的? 尚未理解透彻[捂脸],有待补充,参考如下: https://w ...
- HttpClient之HttpContext使用
Multiple request sequences that represent a logically related session should be executed with the sa ...
- FS,FT,DFS,DTFT,DFT,FFT的联系和区别 数字信号处理
DCT变换的原理及算法 文库介绍 对于初学数字信号处理(DSP)的人来说,这几种变换是最为头疼的,它们是数字信号处理的理论基础,贯穿整个信号的处理. 学习过<高等数学>和<信号与系统 ...
- paper 168: 2018-FATTEN 论文解析-feature space transfer for data augmentation
paper download:https://arxiv.org/abs/1801.04356 本文的核心就是使用GAN网络生成新的数据. 这个总体框图,常规结构,具体是通过在appearance和p ...
- MIS(管理信息系统)
MIS 管理信息系统(Management Information System,简称MIS) 是一个以人为主导,利用计算机硬件.软件.网络通信设备以及其他办公设备,进行信息的收集.传输.加工.储存. ...
- Harbor安装(docker-compose) -- 企业级Registry仓库
根据Harbor官方描述: Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全.标识和管理等,扩展了开源Docker Distri ...
- winform防止输入法对扫码的干扰
把textbox的imemode的属性设为disable,就强制只能录入英文和半角符号,防止了中文输入法等的干扰. 参考:https://blog.csdn.net/jhycjhyc/article/ ...
- 2.tensorflow——Softmax回归
import numpy as np import tensorflow as tf import matplotlib.pyplot as plt from tensorflow.examples. ...
- python开发必备pycharm专业版破解方法
修改hosts文件 添加下面一行到hosts文件,目的是屏蔽掉Pycharm对激活码的验证 0.0.0.0 account.jetbrains.com 注:hosts文件路径,Windows在C:\W ...