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框架之分页器的用法的更多相关文章

  1. DRF框架之认证组件用法(第四天)

    1. 什么是drf 框架的认证组件: auth 就等于是jango中的Auth模块,Auth是自带session信息,但是 drf的认证组件可以自定义token携带过去,去判断用的 2.如何实现认证呢 ...

  2. drf框架中所有视图及用法

    0909自我总结 drf框架中所有视图及用法 一.drf框架中的所有视图类 from django.views import View from rest_framework import views ...

  3. 一、restful规范 二、CBV(View)源代码执行流程 三、drf框架安装和简单使用

    一.restful规范 ''' 它是一个规范,面向资源架构 十条规范 1.API与用户的通讯协议,总是使用HTTPs协议,确保了网络传输的安全性 2.域名 --https://api.example. ...

  4. DRF框架之 serializers 序列化组件

    1. 什么是序列化,其实在python中我们就学了序列化工具json工具,就是吧信息存为类字典形式 2. DRF框架自带序列化的工具: serializers 3. DRF框架 serializers ...

  5. 写写Django中DRF框架概述以及序列化器对象serializer的构造方法以及使用

    写写Django中DRF框架概述以及序列化器对象serializer的构造方法以及使用 一.了解什么是DRF DRF: Django REST framework Django REST framew ...

  6. drf 框架

    一. drf简介 drf框架,全程: django-rest framework  ,   rest是插件名字,django插件的名字叫rest,framework是框架的意思 二. 接口 在平时生活 ...

  7. DRF框架学习总结

    DRF框架安装配置及其功能概述 Django与DRF 源码视图解析 DRF框架序列化和返序列化 DRF框架serializers中ModelSerializer类简化序列化和反序列化操作 DRF源码s ...

  8. drf框架总结复习(1)

    Serializers 序列化组件 为什么要用序列化组件 当我们做前后端分离的项目~~我们前后端交互一般都选择JSON数据格式,JSON是一个轻量级的数据交互格式. 那么我们给前端数据的时候都要转成j ...

  9. DRF框架之视图方法的几个封装好的模块介绍(第三天)

    1.DRF框架给我们封装好了好多层模块的 来实现简便接口的编写 # from rest_framework.mixins import CreateModelMixin, UpdateModelMix ...

随机推荐

  1. IPv6实验1_IPv6地址配置

    IPv6地址配置 实验任务 (1)掌握如何在路由器及PC上配置IPv6地址 (2)掌握如何用IPv6 ping命令进行IPv6地址可达性检查 (3)掌握如何用命令来查看IPv6地址配置 实验过程 在R ...

  2. 自己用的Xshell配色方案

    [comfort]text=dce2e2cyan(bold)=2ad1b8text(bold)=dce2e2magenta=dd3682green=55bb55green(bold)=55bb55ba ...

  3. Spark源码系列:RDD repartition、coalesce 对比

    在上一篇文章中 Spark源码系列:DataFrame repartition.coalesce 对比 对DataFrame的repartition.coalesce进行了对比,在这篇文章中,将会对R ...

  4. SQL Server Service Broker 示例(转)

    1.定义数据类型.协议和服务(发送服务和接收服务) USE master; GO ALTER DATABASE 目标数据库 SET ENABLE_BROKER; GO -- 如果上面的操作执行后,长时 ...

  5. Qt applendPlainText()/append() 多添加一个换行解决方法

    Qt applendPlainText()/append() 多添加一个换行解决方法 void ConsoleDialog::appendMessageToEditor(const QString & ...

  6. 【代码问题】MatConvNet+VS2017编译找不到cl.exe错误

    用vl_compilenn做普通的CPU编译报错: 'cl.exe' 不是内部或外部命令,也不是可运行的程序 或批处理文件. 错误使用 vl_compilenn>check_clpath (li ...

  7. SoapUI接口测试-验签值处理-调用java的加密jar包

    转载自:https://www.jianshu.com/p/7c672426a165 一. 背景: 调用接口时有个请求参数是对请求入参按一定规则进行加密生成的验签值,每次不同参数的请求生成唯一的验签值 ...

  8. C#版微信公众号支付|微信H5支付|微信扫码支付问题汇总及解决方案总结

    最近负责的一些项目开发,都用到了微信支付(微信公众号支付.微信H5支付.微信扫码支付).在开发的过程中,在调试支付的过程中,或多或少都遇到了一些问题,今天总结下,分享,留存.代码在文章结尾处,有需要的 ...

  9. ELK实践-Kibana定制化扩展

    纵观任何一家大数据平台的技术架构,总少不了ElasticSearch:ES作为溶合了后端存储.快速检索.OLAP分析等功能的一套开源组件,更绝的是提供了一套集数据采集与前端展现为一体的框架(即ELK) ...

  10. python列表中的所有值转换为字符串,以及列表拼接成一个字符串

    >>> ls1 = ['a', 1, 'b', 2] >>> ls2 = [str(i) for i in ls1] >>> ls2 ['a', ...