Django:RestFramework之-------分页
9.分页操作
- 分页,看第n页,每页显示n条数据
- 分页,在n个位置,向后查看n条数据.
- 加密分页,上一页和下一页
1.基于PageNumberPagination分页
1.路由:
url(r'^(?P<version>[v1|v2]+)/splitpage/$', views.SplitpageView.as_view(),),
2.视图函数
from rest_framework.pagination import PageNumberPagination
from rest_framework.response import Response
#分页需要导入类
class SplitpageView(APIView):
def get(self,request,*args,**kwargs):
#获取所有数据
roles = models.Role.objects.all()
#创建分页对象
pg = PageNumberPagination()
#在数据库中获取分页的数据
pager_roles = pg.paginate_queryset(queryset=roles,request=request,view=self)
print(pager_roles)
#对数据进行序列化
ser = PagerSerialiser(instance=pager_roles,many=True)
return Response(ser.data)
#settings.py配置
REST_FRAMEWORK = {
"PAGE_SIZE":2,
}
- 返回效果:

- 自定义分页:
class MyPageNumberPagination(PageNumberPagination):
#一页显示数量
page_size = 2
#设置
page_size_query_param = "size"
#每页最大数量
max_page_size = 5
#url页数变量设置:
page_query_param = "page"
class SplitpageView(APIView):
def get(self,request,*args,**kwargs):
#获取所有数据
roles = models.Role.objects.all()
#创建分页对象
pg = PageNumberPagination()
#在数据库中获取分页的数据
pager_roles = pg.paginate_queryset(queryset=roles,request=request,view=self)
print(pager_roles)
#对数据进行序列化
ser = PagerSerialiser(instance=pager_roles,many=True)
return Response(ser.data)
- 显示效果:

显示上一页与下一页,url
#上面函数基础上:
res = pg.get_paginated_response(ser.data)
return ret

2.基于LimitOffsetPagination实现分页
class MyPageNumberPagination2(LimitOffsetPagination):
default_limit = 2
limit_query_param = "limit"
offset_query_param = "offset"
max_limit = 5
class SplitpageView(APIView):
def get(self,request,*args,**kwargs):
#获取所有数据
roles = models.Role.objects.all()
#创建分页对象
pg = MyPageNumberPagination2()
#在数据库中获取分页的数据
pager_roles = pg.paginate_queryset(queryset=roles,request=request,view=self)
print(pager_roles)
#对数据进行序列化
ser = PagerSerialiser(instance=pager_roles,many=True)
return Response(ser.data)
- 显示结果

3.基于CursorPagination 分页(加密)
from rest_framework.pagination import CursorPagination
class MyPageNumberPagination3(CursorPagination):
#
cursor_query_param = "cursor"
page_size = 2
ordering = 'id'
page_size_query_param = None
max_page_size = None
class SplitpageView(APIView):
def get(self,request,*args,**kwargs):
#获取所有数据
roles = models.Role.objects.all()
#创建分页对象
pg = MyPageNumberPagination3()
#在数据库中获取分页的数据
pager_roles = pg.paginate_queryset(queryset=roles,request=request,view=self)
print(pager_roles)
#对数据进行序列化
ser = PagerSerialiser(instance=pager_roles,many=True)
return pg.get_paginated_response(ser.data)

4.总结:
#如果数据量大,如何做分页.
数据库性能相关?
Django:RestFramework之-------分页的更多相关文章
- django: rest-framework的 分页和过滤
django: rest-framework的 分页和过滤 2018年06月28日 10:09:01 weixin_42359464 阅读数:136 标签: flaskrestframeworkdja ...
- django restframework
一.django restframework 请求流程源码剖析 上面的认证一个流程是rest_framework的关于APIauth的认证流程,,这个流程试用权限.频率.版本.认证.这个四个组件都是通 ...
- django restframework 的日常使用
本文讨论 django restframework 的日常使用,满足常用 api 编写的需求,比如 List, Detail, Update, Put, Patch 等等.探讨 django rest ...
- Django RestFramework (DRF)
准备: 下载 pip install djangorestframework 一 APIView源码解析 1 预备知识 CBV(class based view)FBV(function based ...
- django restframework serializer 增加自定义字段
在使用django restframework serializer 序列化在django中定义的model时,有时候我们需要额外在serializer中增加一些model中没有的字段.有两种方法实现 ...
- django之快速分页
本文介绍djanog两种分页,第一是普通分页,第二是使用haystack全文检索的分页. 1.django自带分页功能,这个功能非常好用.基本知识点:Django提供了数据分页的类,这些类被定义在dj ...
- Django内置分页
一.django内置分页 from django.shortcuts import render from django.core.paginator import Paginator, EmptyP ...
- django restframework jwt
既然要来学习jwt(json web token),那么我们肯定是先要了解jwt的优势以及应用场景--跨域认证. $ pip install djangorestframework-jwt 传统coo ...
- Django中的分页,cookies与session
cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不 ...
随机推荐
- eclipse IDE for java developers下载与安装
1.进入eclipse官网下载页面 https://www.eclipse.org/downloads/ 2.点击Download Packages 3.windows 用户 选择 64 bits 4 ...
- HTML基础二-DOM操作
http://www.imdsx.cn/index.php/2017/07/27/html2/ DOM(Document Object Model 文档对象模型) 一个web页面的展示,是由html标 ...
- ESA2GJK1DH1K升级篇: STM32远程乒乓升级,升级流程源码详细说明
前言 1.BootLoader程序,升级简要流程图 2.其实主要的就是把程序文件写入环形队列,然后环形队列取出来数据写入Flash 3.用户程序,简要流程图 下面的读一下,有个印象就可以: 说白了就是 ...
- monkey--常用参数
前戏 参数分类:常规类参数,事件类参数,约束类参数,调试类参数 常规类参数:常规类参数包括帮助参数和日志信息参数,帮助参数用于输出monkey命令使用指导,日志信息参数将日志分为三个等级,级别越高,日 ...
- 如何更新GitHub上的代码?
更新github上的代码 一.克隆代码 1.先是把自己GitHub上的代码克隆到本地(下载到本地) 步骤1.随便创建一个新文件夹(用来存放下载下来的代码) 步骤2.在文件夹中打开cmd 输入下载指令下 ...
- [GXOI/GZOI2019]与或和(位运算,单调栈)
题目链接懒得放了. 题目大意懒得写了. 省选原题哪有找不到的…… 说实话,其实这题是个大水题,被我十秒钟内口胡出来了. 首先位运算除了拆位还能干啥?以下以与为例,或是差不多的. 我们考虑有多少个子矩阵 ...
- Servlet 下载文件及支持中文文件名
Sevlet 下载pdf文件 支持中文文件名 package html2pdf.controller; import java.io.File; import java.io.FileInputStr ...
- BAT脚本入门
BAT脚本入门 echo:显示命令后的字符 chcp 65001: 就是换成UTF-8代码页 echo off: 此语句后的所有运行命令都不显示命令行语句 @:与echo off相似,但它加在每个命令 ...
- Java判断文件类型
通常,在WEB系统中,上传文件时都需要做文件的类型校验,大致有如下几种方法: 1. 通过后缀名,如exe,jpg,bmp,rar,zip等等. 2. 通过读取文件,获取文件的Content-type来 ...
- MOT19数据集百度云盘
图片按视频分的压缩包 [已失效] 链接: https://pan.baidu.com/s/1kNw6yhvqgitNK5N__WOpxw 提取码: yia4 链接: https://pan.baidu ...