分页:
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框架-组件之分页的更多相关文章

  1. Django Rest framework 框架之认证使用和源码执行流程

    用这个框架需要先安装: pip3 install djangorestframework 如果写了一个CBV的东西,继承了View. # 继承Django里面View class APIView(Vi ...

  2. web前端Vue+Django rest framework 框架 生鲜电商项目实战视频教程 ☝☝☝

    web前端Vue+Django rest framework 框架 生鲜电商项目实战视频教程    web前端Vue+Django rest framework 框架 生鲜电商项目实战视频教程 学习 ...

  3. [Django REST framework - 视图组件之视图基类、视图扩展类、视图子类、视图集]

    [Django REST framework - 视图组件之视图基类.视图扩展类.视图子类.视图集] 视图继承关系 详图见文章末尾 视图组件可点我查看 两个视图基类:APIView.GenericAP ...

  4. Django rest framework(7)----分页

    目录 Django rest framework(1)----认证 Django rest framework(2)----权限 Django rest framework(3)----节流 Djan ...

  5. Django REST framework框架介绍和基本使用

    Django REST framework介绍 Django REST framework是基于Django实现的一个RESTful风格API框架,能够帮助我们快速开发RESTful风格的API. 官 ...

  6. Django Rest Framework框架 ---- url控制器

    Django Rest Framework框架 ---- url控制器

  7. web前端Vue+Django rest framework 框架 生鲜电商项目实战✍✍✍

    web前端Vue+Django rest framework 框架 生鲜电商项目实战  整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频 ...

  8. [Django REST framework - 序列化组件、source、钩子函数]

    [Django REST framework - 序列化组件.source.钩子函数] 序列化器-Serializer 什么是rest_framework序列化? 在写前后端不分离的项目时: 我们有f ...

  9. Django的用户认证组件,自定义分页

    一.用户认证组件 1.auth模块 from django.conrtrib import auth django.contrib.auth中提供了许多方法,这里主要介绍其中的三个: 1)authen ...

  10. Django Rest framework 框架

    一.开发模式: 1. 普通开发方式(前后端放在一起写) 2. 前后端分离(前后台通过ajaxo交互) 后端(django rest framework写的) <----ajaxo---> ...

随机推荐

  1. Vue 缓存当前页面keep-alive

    需求: 产品经理在列表页(几千个数据,n个page)点击某一项进去到详情页后,再返回到列表页发现页面回到了第一页,找不到之前的查看的是哪一条了,为了方便咋公司产品经理,返回列表页时需要记住之前的pag ...

  2. Win10系统安装VMware-viclient-6.0无响应问题解决方法

    背景:笔记本重做系统升级至Win10系统后,由于工作需要,得安装VMware-viclient-6.0软件进行远程连接. 问题:没有出现网上那种各种报错情况,只是在点击“安装”按钮的时候没弹出任何等待 ...

  3. Expression: __acrt_first_block == header

    File: minkernel\crts\ucrt\src\appcrt\heap\debug_heap.cpp Line: 996 Expression: __acrt_first_block == ...

  4. 阶段5 3.微服务项目【学成在线】_day18 用户授权_07-动态查询用户权限-权限数据模型

    3 动态查询用户权限 3.1 需求分析 截至目前在测试授权时使用的权限数据是静态数据,正常情况的流程是: 1.管理员给用户分配权限,权限数据写到数据库中. 2.认证服务在进行用户认证时从数据库读取用户 ...

  5. 算法习题---4-1象棋(UVa1589)

    一:题目 在黑方只有一个“将”的情况下,红方只有(车.马.炮)(可以多个).帅的情况下,判断黑方是否被将死 (一)题目详解 其中棋盘按照坐标方式表示,左上角为(,),列数最大9,行数最大10 G 表示 ...

  6. PAT 甲级 1031 Hello World for U (20 分)(一开始没看懂题意)

    1031 Hello World for U (20 分)   Given any string of N (≥) characters, you are asked to form the char ...

  7. Mac下给sublime text3配置Nodejs

    传送门: http://blog.csdn.net/phil_young/article/details/50950206

  8. laravel5.2总结

    转自:http://www.cnblogs.com/redirect/p/6178001.html

  9. 未能加载文件或程序集“System.Web.Extensions, Version=1.0.61025.0, Culture=neutral

    近日将电脑重装了一下,刚刚装上vs2005后打开以前的一个项目,居然出现了下面的错误: 未能加载文件或程序集“System.Web.Extensions.Design, Version=1.0.610 ...

  10. Python3之切片及内置切片函数slice

       切片   取一个list或tuple的部分元素是非常常见的操作.比如,一个list L=[0,1,2,3,4,5,6,7,8,9] 取前3个元素,应该怎么做 笨方法,一个个列出来 >> ...