Django rest-framework框架-组件之分页
分页:
a. 分页,看第n页, 每页显示n条数据 from rest_framework import serializers
from api import models
from rest_framework.pagination import PageNumberPagination
class PagerSerializer(serializers.ModelSerializer):
class Meta:
model = models.Role
fields = "__all__"
#第一版
#url http://www.t.com/api/v1/page/?page=2 显示第2页
class PagerView(APIView):
def get(self, request, *args, **kwargs):
#获取所有数据
roles = models.Role.objects.all()
#获取分页对象
pg = PageNumberPagination()
#在数据库中获取分页数据
pager_roles = pg.paginate_queryset(queryset=roles, request=request,views=self)
#对分页数据进行序列化
ser = PagerSerializer(instance=pager_roles,many=True)
return response(ser.data) #全局配置 分页参数 settings.py
REST_FRAMEWORK = {
"PAGE_SIZE": 2, #表示没页显示两个对象
} 第二版: 自定义分页
from rest_framework.pagination import PageNumberPagination
#自定义类 继承PageNumberPagination
class MyPagerNumberPagination(PageNumberPagination):
page_size = 2 #每页显示几个对象 #关键字 size http://www.t.com/api/v1/page/?page=2&size=5
#可以定制一页显示多少个
page_size_query_param = 'size'
#每页最大显示多少个 比如最大显示5个对象
max_page_size = 5
#关键字 page http://www.t.com/api/v1/page/?page=2
page_query_param = 'page' class PagerView(APIView):
def get(self, request, *args, **kwargs):
#获取所有数据
roles = models.Role.objects.all()
#获取分页对象
pg = MyPagerNumberPagination()
#在数据库中获取分页数据
pager_roles = pg.paginate_queryset(queryset=roles, request=request,views=self)
#对分页数据进行序列化
ser = PagerSerializer(instance=pager_roles,many=True)
#返回一个response对象 里面带上一页下一页的url
return pg.get_paginated_response(ser.data) b. 分页,在n个位置,向后查看n条数据 from rest_framework.pagination import LimitOffsetPagination
class MyLimitOffsetPagination(LimitOffsetPagination):
default_limit = 2 #每页显示几个对象
#关键字 size http://www.t.com/api/v1/page/?offset=4&limit=5 从第4个开始向后取5条
#关键字 limit 从第几个开始向后取几条
limit_query_param = 'limit'
#关键字 offset 从第几个开始
offset_query_param = 'offset'
#最多向后显示限制5
max_limit = 5 class PagerView(APIView):
def get(self, request, *args, **kwargs):
#获取所有数据
roles = models.Role.objects.all()
#获取分页对象
pg = MyLimitOffsetPagination()
#在数据库中获取分页数据
pager_roles = pg.paginate_queryset(queryset=roles, request=request,views=self)
#对分页数据进行序列化
ser = PagerSerializer(instance=pager_roles,many=True)
#返回一个response对象 里面带上一页下一页的url
return pg.get_paginated_response(ser.data) c. 加密分页,上一页和下一页
from rest_framework.pagination import CursorPagination
class MyCursorPagination(CursorPagination):
page_size = 2 #每页显示几个对象
#关键字 size http://www.t.com/api/v1/page/?cursor=3IUSE&¥@*#GEE
#关键字 cursor
cursor_query_param = 'cursor'
#排序规则 使用id来排序 -号是倒序
ordering = '-id'
#最多向后显示限制5
cursor_size_query_param = None
max_page_size =None class PagerView(APIView):
def get(self, request, *args, **kwargs):
#获取所有数据
roles = models.Role.objects.all()
#获取分页对象
#加密http://www.t.com/api/v1/page/?cursor=3IUSE&¥@*#GEEW 页码加了密的
pg = MyCursorPagination(order='id')
#在数据库中获取分页数据
pager_roles = pg.paginate_queryset(queryset=roles, request=request,views=self)
#对分页数据进行序列化
ser = PagerSerializer(instance=pager_roles,many=True)
#返回一个response对象 里面带上一页下一页的url
return pg.get_paginated_response(ser.data)
Django rest-framework框架-组件之分页的更多相关文章
- Django Rest framework 框架之认证使用和源码执行流程
用这个框架需要先安装: pip3 install djangorestframework 如果写了一个CBV的东西,继承了View. # 继承Django里面View class APIView(Vi ...
- web前端Vue+Django rest framework 框架 生鲜电商项目实战视频教程 ☝☝☝
web前端Vue+Django rest framework 框架 生鲜电商项目实战视频教程 web前端Vue+Django rest framework 框架 生鲜电商项目实战视频教程 学习 ...
- [Django REST framework - 视图组件之视图基类、视图扩展类、视图子类、视图集]
[Django REST framework - 视图组件之视图基类.视图扩展类.视图子类.视图集] 视图继承关系 详图见文章末尾 视图组件可点我查看 两个视图基类:APIView.GenericAP ...
- Django rest framework(7)----分页
目录 Django rest framework(1)----认证 Django rest framework(2)----权限 Django rest framework(3)----节流 Djan ...
- Django REST framework框架介绍和基本使用
Django REST framework介绍 Django REST framework是基于Django实现的一个RESTful风格API框架,能够帮助我们快速开发RESTful风格的API. 官 ...
- Django Rest Framework框架 ---- url控制器
Django Rest Framework框架 ---- url控制器
- web前端Vue+Django rest framework 框架 生鲜电商项目实战✍✍✍
web前端Vue+Django rest framework 框架 生鲜电商项目实战 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频 ...
- [Django REST framework - 序列化组件、source、钩子函数]
[Django REST framework - 序列化组件.source.钩子函数] 序列化器-Serializer 什么是rest_framework序列化? 在写前后端不分离的项目时: 我们有f ...
- Django的用户认证组件,自定义分页
一.用户认证组件 1.auth模块 from django.conrtrib import auth django.contrib.auth中提供了许多方法,这里主要介绍其中的三个: 1)authen ...
- Django Rest framework 框架
一.开发模式: 1. 普通开发方式(前后端放在一起写) 2. 前后端分离(前后台通过ajaxo交互) 后端(django rest framework写的) <----ajaxo---> ...
随机推荐
- SQL-W3School-高级:SQL 数据库
ylbtech-SQL-W3School-高级:SQL 数据库 1.返回顶部 1. 现代的 SQL 服务器构建在 RDBMS 之上. DBMS - 数据库管理系统(Database Managemen ...
- 自定义基于IFC数据的施工进度数据结构
<DataSource>D:/qlbz20190802.ifc</DataSource> <Datas> <Data> <ID></I ...
- 阶段5 3.微服务项目【学成在线】_day16 Spring Security Oauth2_19-认证接口开发-接口开发-controller
补充controller方法 判断是否有值传过来. 私有方法存储cookie httpOnly设置为false的话 浏览器就拿到这个cookie 拿到Response cookie在配置文件内的配置 ...
- Arduino---ESP8266 WIFI模块
一:Arduino安装ESP8266 https://www.arduino.cn/thread-76029-1-1.html(内容截图如下:最简单方法) 选用NodeMCU .0即可 二:简单测试 ...
- Qt编写控件属性设计器5-属性中文
一.前言 在上一篇文章中就提到过,使用qtpropertybrowser来加载属性,对应加载到的属性是英文的,也就是控件类中Q_PROPERTY描述的变量名称,如何变成中文或者其他语言显示呢?这个就需 ...
- 一百四十:CMS系统之使用flask-paginate实现分页功能
官方文档:https://pythonhosted.org/Flask-paginate/ 安装:pip install flask-paginate 在没有分页的情况下,默认会加载所有内容 在con ...
- 关于做移动端ui自动化测试使用PC代理网络会出现的问题
无论是手动操作app还是ui脚本操作app,只要你使用了代理网络,第一次请求的时长会耗时特别长,所以在移动端测试时尽量不要使用代理网络,减少不必要的麻烦
- (十一)Centos之帮助命令
帮助命令man (manual) 比如我们可以看下man命令的解释 [root@localhost ~]# man man MAN(1) ...
- Linux配置代理IP
Linux配置代理IP: vim /etc/profile http_proxy=http://username:password@ip:port/ https_proxy=http://userna ...
- linux 网络配置及远程连接
linux 网络配置及远程连接 前言 本文结合自己的经历主要讲述以Centos7为基础网络配置和远程连接的解决步骤 网络配置: 安装好centos7后,是上不了网的,配置步骤如下: (1).输入命令d ...