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---> ...
随机推荐
- Java同步数据结构之ConcurrentHashMap
前言 这是Java并发包最后一个集合框架的数据结构,其复杂程度也较以往任何数据结构复杂的多,顾名思义ConcurrentHashMap是线程安全版本的HashMap,总所周知HashMap是非线程安全 ...
- Android:修改连接到AP端显示的设备名
一.Android系统代码中实现设备名分配 1. \frameworks\base\services\core\java\com\android\server\ConnectivityService. ...
- 【转载】 第四范式首席科学家杨强:AlphaGo的弱点及迁移学习的应对(附视频)
原文地址: https://www.jiqizhixin.com/articles/2017-06-02-2 ============================================= ...
- css3 animation 点亮灯光效果
<style> .wrap .bulb { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50% ...
- 生成对抗网络GAN详解与代码
1.GAN的基本原理其实非常简单,这里以生成图片为例进行说明.假设我们有两个网络,G(Generator)和D(Discriminator).正如它的名字所暗示的那样,它们的功能分别是: G是一个生成 ...
- Django:django后台传递数据到js中
#奇怪传递字典时前台接收不到???datalist= [{'site': '自强学堂', 'author': '涂伟忠'}]#只要列表能接收# datalist=[[93, 93, 0, 100.01 ...
- [转]NopCommerce中的多商店支持:权威指南
[转]NopCommerce中的多商店支持:权威指南 多商店支持是最强大的nopCommerce功能之一.但究竟什么是多店支持?它是谁的?如何在nopCommerce中设置多个商店?在今天的帖子中,我 ...
- 【POJ - 3268 】Silver Cow Party (最短路 Dijkstra算法)
Silver Cow Party Descriptions 给出n个点和m条边,接着是m条边,代表从牛a到牛b需要花费c时间,现在所有牛要到牛x那里去参加聚会,并且所有牛参加聚会后还要回来,给你牛x, ...
- 原装win8系统电脑崩溃问题解决
原装win8系统电脑崩溃问题解决 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 说明:之所以撰写本篇关于win8原装系统电脑崩溃的博文,一是要吐槽一下原装w ...
- 最新 二六三网络通信java校招面经 (含整理过的面试题大全)
从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿. 二六三网络通信等10家互联网公司的校招Offer,因为某些自身原因最终选择了 二六三网络通信.6.7月主要是做系统复习.项 ...