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 ...
随机推荐
- WiFi万能钥匙 for Macv1.1.0中文版
wifi万能钥匙 for Mac是一款运行在Mac平台上的免费WiFi热点软件,Mac分享无线流量.管理WiFi连接的必备神器.WiFi万能钥匙Mac版内置千万Wi-Fi热点数据,随时随地轻松接入无线 ...
- java8_api_格式化数据
格式化数据1 Locale类 格式化日期时间 格式化数字 Locale类,主要是国际化相关 该类代表语言环境 实例化: ...
- 如何安装私有 npm 包?
安装私有 npm 包的步骤: 先安装私有 npm 包:npm install <npm包名> --registry=<npm包源> 然后运行npm install安装公共 np ...
- orchestrator HTTP接口forget-cluster误下线集群问题
orchestrator 提供了"forget-cluster"HTTP接口用于下线集群.该接口可以根据提供的参数,推测可能的集群名cluster name,然后使用cluster ...
- ubuntu安装yaf
ubuntu 下PHP安装yaf扩展,需要先安装其他软件 sudo apt-get install libncurses5-dev libpcre3-dev pcre-devel -y 然后再执行 p ...
- Tomcat 启动报错:host-manager does not exist or is not a readable directory
http://blog.csdn.net/yh88356656/article/details/50519120 新安装一个Tomcat,我们肯定会删除Tomcat Webapps下的自带项目,在考入 ...
- 函数中不能对全局变量进行修改,想要修改全局变量需要在变量前面加global
# def change_name(name):# global school # school = "Mage Linux"# print(&quo ...
- ThinkPHP 中使用 IS_AJAX 判断原生 JS 中的 Ajax 出现问题
问题: 在 ThinkPHP 中使用原生 js 发起 Ajax 请求的时候.在控制器无法使用 IS_AJAX 进行判断.而使用 jQuery 中的 ajax 是没有问题的. 在ThinkPHP中.有一 ...
- Mybatis中 Integer 值为0时,默认为空字符串的解决办法。
需求是查询级别为0的用户 User对象里的level字段的值为0,查询时居然没有查到为level为0的用户. <select id="selectSelective" par ...
- 一本通之 一堆迷宫 (Dungeon Master&走出迷宫&走迷宫)
一本通在线崩溃....... . 有图有真相 这是个三维迷宫,其实和二位迷宫差不多,只是方向多加了2个. 但这个题的输入十分恶心,一度被坑的用cin.ignore(),但还是不过... 它的正确输入方 ...