drf分页器

1.第一种分页:
类似于django中的分页
2.第二种分页:
偏移分页
3.第三种分页:
加密分页(查询速度快)
无法跳跃

基本参数

from rest_framework.pagination import PageNumberPagination,LimitOffsetPagination,CursorPagination

page_size #每页显示的数量

page_query_param = 'page'  #/?page=2 查询的key

#指定当前页显示多少条
page_size_query_param#/?page=2&size=5 取第2页,显示5条 #当前页显示最多条数
max_page_size

第一种分页

from rest_framework.pagination import PageNumberPagination,LimitOffsetPagination,CursorPagination

#实例化产生一个分页对象
page = PageNumberPagination() #第一个参数:要分页的数据,第二个参数,request,第三个参数,当前视图对象
page_list = page.paginate_queryset(book_list,request,self)#self为视图 #再序列化的时候,用分页之后的数据
ser = Myserializer(instance=page_list,many=True)
paginate_queryset

第二种分页,偏移分页

#默认每页显示多少
default_limit = 2 #标杆 /?offset=2&limit=3 以2位基础,显示3条 offset_query_param='offset' limit_query_param = 'limit' #每页显示的最大条数
max_limit = 5 from rest_framework.pagination import LimitOffsetPagination #实例化产生一个分页对象
page = LimitOffsetPagination() #第一个参数:要分页的数据,第二个参数,request,第三个参数,当前视图对象
page_list = page.paginate_queryset(book_list,request,self)#self为视图 #再序列化的时候,用分页之后的数据
ser = Myserializer(instance=page_list,many=True)
paginate_queryset

第三种分页(加密分页)

#按nid排序
page.ordering = 'nid'
#查询的key值
cursor_query_param = 'cursor'
#每页显示多少条
page_size = 2

使用

1.生成对象(可以修改对象的属性)
2.ret = 对象.paginate_queryset()
3.丢到序列化类中,完成序列化

修改默认参数的两种方法

1.自定义分页类,继承PageNumberPagination
2.产生page = PageNumberPagination()对象后
page.page_size=5
page.page_query_param = 'size'

练习

from rest_framework.pagination import PageNumberPagination,LimitOffsetPagination,CursorPagination
from rest_framework.views import APIView
from django.http import JsonResponse
class Infos(APIView):
def get(self,request,*args,**kwargs):
res_page = int(request.query_params.get('page',0))
conn = get_redis_connection()
obj_li = []
for key,value in conn.hscan_iter('dic1',count=1000):
k =key.decode('utf-8')
v = value.decode('utf-8')
obj_li.append({k:v})
page = PageNumberPagination()
page.page_size = 120
max_page =int(len(obj_li)/page.page_size)
if res_page > max_page:
return HttpResponse('超过最大页数')
page_list = page.paginate_queryset(obj_li,request,self)
return JsonResponse(page_list,safe=False)

drf分页器的更多相关文章

  1. $Django importlib与dir知识,手写配置文件, 配置查找顺序 drf分页器&drf版本控制

    1  importlib与dir知识 # importlib简介动态导入字符串模块 # 常规导入 from ss.aa import b from ss import a print(b,type(b ...

  2. 一.rest-framework之版本控制 二、Django缓存 三、跨域问题 四、drf分页器 五、响应器 六、url控制器

    一.rest-framework之版本控制 1.作用 用于版本的控制 2.内置的版本控制 from rest_framework.versioning import QueryParameterVer ...

  3. Django(68)drf分页器的使用

    前言 当后台返回的数据过多时,我们就要配置分页器,比如一页最多只能展示10条等等,drf中默认配置了3个分页面 PageNumberPagination:基础分页器,性能略差 LimitOffsetP ...

  4. drf过滤器、分页器、筛选器的应用

    一.drf 提供的过滤器(ordering) views.py from rest_framework.generics import ListAPIView from . import models ...

  5. Django框架深入了解_04(DRF之url控制、解析器、响应器、版本控制、分页)

    一.url控制 基本路由写法:最常用 from django.conf.urls import url from django.contrib import admin from app01 impo ...

  6. drf框架之分页器的用法

    1. 分页器分为:简单分页器与偏移分页器和加密分页器 2.实现一个简单的分页器的用法: # 简单分页 # 第一步,导入分页类 # from rest_framework.pagination impo ...

  7. drf 认证、权限、限流、过滤、排序、分页器

    认证Authentication 准备工作:(需要结合权限用) 1. 需要使用到登陆功能,所以我们使用django内置admin站点并创建一个管理员. python manage.py creates ...

  8. DRF(5) - 频率组件、url注册器、响应器、分页器

    一.频率组件 1.使用DRF简单频率控制实现对用户进行访问频率控制 1)导入模块,定义频率类并继承SimpleRateThrottle # 导入模块 from rest_framework.throt ...

  9. DRF之注册器响应器分页器

    概要 url注册器 响应器 分页器 url注册器 通过DRF的视图组件,数据接口逻辑被我们优化到最剩下一个类,接下来,我们使用DRF的url控制器来帮助我们自动生成url,使用步骤如下: 第一步:导入 ...

随机推荐

  1. python大战机器学习——数据降维

    注:因为公式敲起来太麻烦,因此本文中的公式没有呈现出来,想要知道具体的计算公式,请参考原书中内容 降维就是指采用某种映射方法,将原高维空间中的数据点映射到低维度的空间中 1.主成分分析(PCA) 将n ...

  2. ABP框架和NET CORE实战

    http://www.fishpro.com.cn/2017/09/ ABP实战系列 ABP实战 ABP-第一个Asp.net core 示例(7)AutoMapper的使用 我们为什么需要使用DDD ...

  3. Codeforces Beta Round #96 (Div. 2) E. Logo Turtle dp

    http://codeforces.com/contest/133/problem/E 题目就是给定一段序列,要求那个乌龟要走完整段序列,其中T就是掉头,F就是向前一步,然后开始在原点,起始方向随意, ...

  4. 牛客网Java刷题知识点之为什么static成员方法不能是抽象方法,其必须实现

    不多说,直接上干货! static修饰的方法我们称之为静态方法,我们通过类名对其进行直接调用.由于它在类加载的时候就存在了,它不依赖于任何实例,所以static方法必须实现,也就是说它不能是抽象方法.

  5. codevs 4888 零件分组

    4888 零件分组  时间限制: 1 s  空间限制: 16000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Description 现有一些棍状零件,每个零件都有 ...

  6. 多线程串口通信 MFC CSerialPort

    写在前面: 晚上应该继续完成未写完的代码,但Chrome上打开的标签实在太多了,约30个了,必须关掉一些,所以需要把自己看的整理一下然后关掉.本次主要写点MFC环境下多线程串口通信相关的东西,这包括线 ...

  7. 重写strcpy函数,以实现strcpy的功能

    char * strcpyTest(char *dst,const char *src);Action(){ char *ptr=(char*)malloc(100); char a[]={" ...

  8. 洛谷 P3019 [USACO11MAR]会见点Meeting Place

    题目背景 征求翻译.如果你能提供翻译或者题意简述,请直接发讨论,感谢你的贡献. 题目描述 Bessie and Jonell are great friends. Since Farmer John ...

  9. GetOpenFileName 选择文件夹的解决方法

    某些环境下(如WIN PE)windows自带的选择文件夹api不能使用或者体验不佳.现在利用GetOpenFileName的回掉参数实现了选择文件夹选择功能. #include <Window ...

  10. BZOJ 4491: 我也不知道题目名字是什么 RMQ

    4491: 我也不知道题目名字是什么 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 317  Solved: 174[Submit][Status][ ...