drf框架之分页器的用法
1. 分页器分为:简单分页器与偏移分页器和加密分页器
2.实现一个简单的分页器的用法:
# 简单分页
# 第一步,导入分页类
# from rest_framework.pagination import PageNumberPagination
# class MyPageNumberPagination(PageNumberPagination):
# page_size=4
#
# class BooksView(APIView):
# def get(self, request):
# response = CommonResponse()
# book_list = models.Book.objects.all()
#
# # 第二步:实力化产生一个分页类对象,不需要传参数
# page_pagination = PageNumberPagination()
# #*****重点,4个参数
# page_pagination.page_size=4
# page_pagination.page_query_param='xx'
# page_pagination.page_size_query_param='max'
# # page_pagination.max_page_size=7
#
# # 第一个参数是要分页的queryset对象,第二个参数是request对象
# ret = page_pagination.paginate_queryset(book_list, request, self)
# #第三步,再序列化的时候用ret对象
# book_ser = BookSerializer(instance=ret, many=True)
# response.msg = '查询成功'
# response.data = book_ser.data
# # return Response(response.get_dic)
# return page_pagination.get_paginated_response(book_ser.data)
简单分页器的实现
3. 加密分页器的实现:
#CursorPagination 分页
# from rest_framework.pagination import CursorPagination
# class BooksView(APIView):
# def get(self, request):
# response = CommonResponse()
# book_list = models.Book.objects.all()
# page_pagination = CursorPagination()
# #重点的参数
# page_pagination.ordering='nid'
# # page_pagination.page_size=3
#
#
# ret = page_pagination.paginate_queryset(book_list, request, self)
# book_ser = BookSerializer(instance=ret, many=True)
# response.msg = '查询成功'
# response.data = book_ser.data
# # return Response(response.get_dic)
# return page_pagination.get_paginated_response(book_ser.data)
加密分页器
4. settings做相应的配置
# 所有drf的配置,都放在这个字典中
REST_FRAMEWORK={
#第四步,配置每页显示的条数
#每页显示3条
'PAGE_SIZE':3
}
settings加载
5. 分页器案例分析:
分页器
1 简单分页(查看第n页,每页显示n条)
-使用方法
-1 导入PageNumberPagination类
-2 实例化产生一个对象
-page_pagination = PageNumberPagination()
-3 需要配置四个参数:page_size,page_query_param,page_size_query_param,max_page_size
-page_size必须指定:在setting中指定或者直接赋值
-4 调用下面的方法,返回ret数据
ret = page_pagination.paginate_queryset(book_list, request, self)
-5 再序列化,就是序列化返回的数据,也就是ret -类中需要掌握的几个属性
-page_size:控制每页显示条数
-page_query_param:控制查询第几页的查询参数,
-比如page_query_param='xx'
-http://127.0.0.1:8000/books/?xx=2 表示查询第二页的数据
-page_size_query_param:控制每页最大显示的条数
-比如page_pagination.page_size_query_param='max'
-http://127.0.0.1:8000/books/?xx=2&max=6 表示查询第二页的数据,每页显示6条
-max_page_size:控制每页最大显示的条数
-比如:page_pagination.max_page_size=7
-http://127.0.0.1:8000/books/?max=1000 最多显示7条
drf框架之分页器的用法的更多相关文章
- DRF框架之认证组件用法(第四天)
1. 什么是drf 框架的认证组件: auth 就等于是jango中的Auth模块,Auth是自带session信息,但是 drf的认证组件可以自定义token携带过去,去判断用的 2.如何实现认证呢 ...
- drf框架中所有视图及用法
0909自我总结 drf框架中所有视图及用法 一.drf框架中的所有视图类 from django.views import View from rest_framework import views ...
- 一、restful规范 二、CBV(View)源代码执行流程 三、drf框架安装和简单使用
一.restful规范 ''' 它是一个规范,面向资源架构 十条规范 1.API与用户的通讯协议,总是使用HTTPs协议,确保了网络传输的安全性 2.域名 --https://api.example. ...
- DRF框架之 serializers 序列化组件
1. 什么是序列化,其实在python中我们就学了序列化工具json工具,就是吧信息存为类字典形式 2. DRF框架自带序列化的工具: serializers 3. DRF框架 serializers ...
- 写写Django中DRF框架概述以及序列化器对象serializer的构造方法以及使用
写写Django中DRF框架概述以及序列化器对象serializer的构造方法以及使用 一.了解什么是DRF DRF: Django REST framework Django REST framew ...
- drf 框架
一. drf简介 drf框架,全程: django-rest framework , rest是插件名字,django插件的名字叫rest,framework是框架的意思 二. 接口 在平时生活 ...
- DRF框架学习总结
DRF框架安装配置及其功能概述 Django与DRF 源码视图解析 DRF框架序列化和返序列化 DRF框架serializers中ModelSerializer类简化序列化和反序列化操作 DRF源码s ...
- drf框架总结复习(1)
Serializers 序列化组件 为什么要用序列化组件 当我们做前后端分离的项目~~我们前后端交互一般都选择JSON数据格式,JSON是一个轻量级的数据交互格式. 那么我们给前端数据的时候都要转成j ...
- DRF框架之视图方法的几个封装好的模块介绍(第三天)
1.DRF框架给我们封装好了好多层模块的 来实现简便接口的编写 # from rest_framework.mixins import CreateModelMixin, UpdateModelMix ...
随机推荐
- ios-键盘回收
对输入的UITextField 控件设置完代理,然后粘上两种方法,即可. #pragma mark- 键盘收回 -(void)textFieldDidEndEditing:(UITextField * ...
- 在Django中运行ExtJS 事例
网上关于ExtJS的事例挺多的,但是在Django中使用ExtJS挺少的,当然了,一些大牛觉得ExtJS运用在页面上是很简单的事,但是对于菜鸟来说,实在有点困难. 我这个例子是用在了sublime3这 ...
- [Jave - JDBC] executeUpdate & executeQuery & execute
1. executeUpdate 用於執行INSERT.UPDATE.DELETE語法,以及 DDL語句(如CREATE TABLE 和DROP TABLE). 返回值為受影響的行數or更新計數(整數 ...
- Servlet接口UML图
Servlet.class源码
- 什么是真正的Java技术,本篇文章让你了解
“你学习一门技术的最佳时机是三年前,其次是现在.”这句话对于哪一种行业都很适用,如果你已经学习过Java,那么恭喜你你很有先见之明,如果你并不了解Java,这篇文章带你快速掌握Java的几个核心知识点 ...
- ie 9.10 兼容性问题 遇到的坑
1.ie9 中ajax 跨域调用时 error报错信息为”No Transport” 原因是 ajax跨域 本人用的是 cors解决方案 但是ie9一下版本 对cors默认是不允许的所以需要我们自 ...
- mysql error 1067 invalid default timestamp
问题 MySQL 5.7版本,在创建数据表时,使用以下语句定义一个字段: `update_time` timestamp DEFAULT '0000-00-00 00:00:00' ON UPDATE ...
- DNS子域授权
DNS子域授权 当一个域很大时,而且还有上,下层关系,如果所有的记录变更都由某一台服务器来管理的话,那将会是什么样子?就好比一个公司的总经理直接管理公司1000个人的所有事项,恐怕会被累死.所以会在总 ...
- 执行代码出现ImportError:attempted relative import with no known parent package
前言 在这篇文章中,我将会解析 ImportError: attempted relative import with no known parent package 这个异常的原因.当你在运行的py ...
- JVM-垃圾收集算法
新生代:复制算法,IBM研究过,约98%对象是“朝生夕死”,所以不需要按照1:1来划分:HotSpot中默认是8:1:1,即每次新生代可用空间为90%,只有10%会被“浪费”, 当Survivor空间 ...