首页 > 其他分享 >drf--分页

drf--分页

时间:2022-11-30 23:22:21浏览次数:40  
标签:分页 -- 条数 query import drf data page size

from django.shortcuts import render,HttpResponse
from rest_framework.pagination import PageNumberPagination
from rest_framework.views import APIView
from app01.models import Userinfo
from utils.userinfo_ser import UserInfoSerializers
import json
# Create your views here.


#分页类
#也可以使用全局配置
class CommonPageNumberPagination(PageNumberPagination):
    page_size = 5  # 每页显示的数据条数
    page_query_param = 'page'  # 页码的参数名
    page_size_query_param = 'size'  # 每页显示条数的参数名
    max_page_size = 10  # 最大显示条数,只有size参数有值才会生效


#视图类
class Users(APIView):
    def get(self,request,*args,**kwargs):
        Userinfos = Userinfo.objects.all()
        ser = UserInfoSerializers(instance=Userinfos,many=True)
        pg = CommonPageNumberPagination()
        Users_data = pg.paginate_queryset(queryset=ser.data,request=request,view=self)      #调用分页
        data = json.dumps(Users_data,ensure_ascii=False)
        return HttpResponse(data)

 

 

 

还可以使用get_paginated_response方法(获取处理好的Response对象)。自带上一页和下一页

from django.shortcuts import render,HttpResponse
from rest_framework.pagination import PageNumberPagination
from rest_framework.views import APIView
from app01.models import Userinfo
from utils.userinfo_ser import UserInfoSerializers
import json
# Create your views here.


#分页类
#也可以使用全局配置
class CommonPageNumberPagination(PageNumberPagination):
    page_size = 5  # 每页显示的数据条数
    page_query_param = 'page'  # 页码的参数名
    page_size_query_param = 'size'  # 每页显示条数的参数名
    max_page_size = 10  # 最大显示条数,只有size参数有值才会生效


#视图类
class Users(APIView):
    def get(self,request,*args,**kwargs):
        Userinfos = Userinfo.objects.all()
        ser = UserInfoSerializers(instance=Userinfos,many=True)
        pg = CommonPageNumberPagination()
        Users_data = pg.paginate_queryset(queryset=ser.data,request=request,view=self)      #调用分页
        return pg.get_paginated_response(Users_data)

 

 

 

 

LimitOffsetPagination类

偏移分页,根据偏移量和限制条控制返回的数据。

即从第3条数据开始,取5条数据,http://127.0.0.1:8000/books/?limit=3&offset=5

继承LimitOffsetPagination重写属性:

class CommonLimitOffsetPagination(LimitOffsetPagination):
    default_limit = 5 # 每页默认显示多少条
    limit_query_param = 'limit'  # 限制条数的参数名
    offset_query_param = 'offset'  # 偏移量的参数名
    max_limit = 6  # 最大限制条数

 

 

CursorPagination类

游标分页,根据当前游标位置控制返回的数据,页面跳转只能跳上一页和下一页,但是针对于大数据量分页效率高。

继承CursorPagination类重写属性:

class CommonCursorPagination(CursorPagination):
    cursor_query_param = 'cursor'  # 游标的参数
    page_size = 5  # 每页显示的条数
    ordering = 'price'  # 排序的字段,必须是表中有的字段

 

标签:分页,--,条数,query,import,drf,data,page,size
From: https://www.cnblogs.com/powfu/p/16940119.html

相关文章

  • linux命令watch的用法
      前言是不是经常会遇到需要观察某个内容,为了持续观察而反复执行某个命令?也许你可以写一个简单的脚本帮你反复执行,但是有更简单方便的方法为什么不用呢?今天要介绍的便......
  • Redis分布式锁误删情况说明
    辑说明:持有锁的线程在锁的内部出现了阻塞,导致他的锁自动释放,这时其他线程,线程2来尝试获得锁,就拿到了这把锁,然后线程2在持有锁执行过程中,线程1反应过来,继续执行,而线程1执行......
  • 2022 FIFA 世界杯 首发阵容组件库 All In One
    2022FIFA世界杯首发阵容组件库AllInOnehttps://live.douyin.com/fifaworldcup/7079013128293482526突尼斯vs法国https://codepen.io/xgqfrms/pen/ZERMxZE......
  • 栈实现表达式求值
    通过前两天的博客园,可以知道我最近在疯狂补作业,这是我在数据结构实验课遇到的一个题,我通过搜寻相关知识点,理清了后缀表达式的转化过程题目要求:使用键盘输入数学表达式(含......
  • About Piano
    Theday beforeyesterday,IsawtheThanksgivingDay'sshowinAmerica.BeforeChristmas,IwanttoplayJing Bellonthepiano. Ididsomeworklike"h......
  • 存储过程
    案例,批量插入测试数据delimiter$$//以delimiter来标记用$表示存储过程结束createprocedurepre()//创建pre()存储方法beg......
  • 实验四 Web服务器2
    任务详情基于华为鲲鹏云服务器CentOS中(或Ubuntu),使用LinuxSocket实现:Web服务器的客户端服务器,提交程序运行截图实现GET即可,请求,响应要符合HTTP协议规范服务器部署到华......
  • 2021 ICPC Asia East Continent Final L
    L.FenwickTree题链题目都说了我们可以将这个序列看作二叉搜索树我们显然序列越往后层数越高我们一层一层的考虑我们要是当前s[i]=1显然是要往下一层传递一个贡献......
  • 集合
    集合集合概述数组其实就是一个集合。集合实际上就是一个容器。可以来容纳其它类型的数据。集合为什么说在开发中使用较多?集合是一个容器,是一个载体,可以一次容纳多个对......
  • pnpm 对比 npm 的改变
    简介pnpm相比npm提高了安装速度、降低了存储空间,这得益于其在路径结构和存储方式上所做的改进。pnpm解决的问题:/.pnpm路径的存在解决了“幽灵依赖”问题(或者可以......