1、自定义分页器

class APIViewPageNumberPaginations():from rest_framework.pagination import PageNumberPaginationclass APIViewBasePaginations(PageNumberPagination):page_size = 2  # 每页数据量page_query_param = 'page'  # ?page=1跳转页max_page_size = 10  # 每页最大数据量page_size_query_param = 'size'def __init__(self, request, serializer, queryset):''':param request: 当前的请求:param serializer:  模型类的序列化器:param queryset:  要操作的模型对象'''self.request = requestself.serializer = serializerself.queryset = querysetdef start(self):# 1、实例分页对象paginat = self.APIViewBasePaginations()# 2、拿到分页后的数据page_list = paginat.paginate_queryset(queryset=self.queryset, request=self.request, view=self)# 3、对分页后的数据将进行序列化ser = self.serializer(instance=page_list, many=True)count = paginat.page.paginator.count  # 总数据量next_page = 1 if paginat.get_next_link() else 0  # 有下一页,返回1,没有返回0previous_page = 1 if paginat.get_previous_link() else 0  # 有上一页时,返回1,没有返回0page_size = paginat.page_size  # 每页大小pages = count // page_size  # 总页数current_page = self.request.query_params.get('page')try:current_page = int(current_page)except Exception as e:current_page = 'error'if count % page_size:pages += 1return {'data': ser.data,  # 当前页的数据'next': next_page,  # 是否有下一页'previous': previous_page,  # 是否有上一页'count': count,  # 总数据量'pages': pages,  # 总页数'current_page': current_page  # 当前的页数}

2、在视图中使用:

class UserInfoAPIView(APIView):#只有管理员才能使用,获取用户信息permission_classes = [permission.AdminPermission]def get(self, request):'''功能:返回用户信息(除了role=1的用户,管理员用户信息不展示):return:'''#搜索的参数name = request.query_params.get('name')role = request.query_params.get('role')# 1、拿到数据集instance = models.UserModel.objects.filter(role__gt=1).order_by('id')if name and name!='全部':instance = instance.filter(name__contains=name)if role and role!='全部':instance = instance.filter(role=role)# 2、拿到序列化器ser = serializer.UserInfoModelSerializer# 3、实例化化分页对象,paginat = APIViewPageNumberPaginations(request, ser, instance)# 4、执行分页功能,拿到分页后的数据data = paginat.start()return Response(data=data)

分页器-DRF-自定义分页器给APIView视图类使用相关推荐

  1. Django分页器和自定义分页器

    一.自定义分页器 import copyclass Pagination():def __init__(self,request,current_page,all_data_num,each_page ...

  2. antd自定义分页器_自定义分页器

    classPagination(object):def __init__(self, current_page, all_count, per_page_num=10, pager_count=11) ...

  3. page 怎么把list 分页_自定义分页器的实现

    前言 django也有自带额分页器,但是功能较少,使用起来较为繁琐.所以我们可以使用自定义非分页器. 自定义分页器的推导思路 # queryset对象是支持索引切片操作的(不支持负数索引) book_ ...

  4. Django 基础(12)-Django drf 分页查询(批量查询)、自定义分页器

    文章目录 Django drf 分页查询(批量查询) PageNumberPagination:普通分页 Django 自定义分页器 自定义批量查询的返回结构 LimitOffsetPaginatio ...

  5. antd自定义分页器_从零开始实现类 antd 分页器(二):分页核心代码

    本文是使用 Typescript 开发类 antd 分页器,并发布 npm 的第二篇,因为最近在业务中使用了 antd 中的 Pagination 开发了相关业务,而自己又对组件的封装由很有兴趣,所以 ...

  6. Web框架之Django_07 进阶操作(MTV与MVC、多对多表三种创建方式、前后端传输数据编码格式contentType、ajax、自定义分页器)

    阅读目录 一.MVC与MTV 二.多对多表的创建 三.ajax,前后端传输编码格式contentType 四.批量插入数据与自定义分页器 摘要 MTV与MVC 多对多表三种创建方式 ajax ,前后端 ...

  7. Django之批量插入数据、 自定义分页器

    文章目录 一. 批量插入数据 方法一: 方法二: 批量插入bulk_create方法 二. 自定义分页器 2.1 分页推导 2.2 数据总页面获取 2.3 内置方法之divmod 三. 自定义分页器终 ...

  8. swiper自定义分页器

     html部分 <div class="swiper-container"><div class="swiper-wrapper">&l ...

  9. python drf_067.Python框架Django之DRF视图类

    一 关于视图类的一下概念 drf除了在数据序列化部分简写代码以外,还在视图中提供了简写操作.所以在django原有的django.views.View类基础上,drf封装了多个子类出来提供给我们使用. ...

最新文章

  1. Windows和linux双系统——改动默认启动顺序
  2. mysql的proxy机制_MySQL Proxy工作机制浅析
  3. visual studio内置“iis”组件提取及二次开发
  4. 龙剑服务器为什么总是维修,《龙剑》2014年3月13日更新维护公告
  5. 计算机性能在线测评,关于电脑性能测试的常见的几大方法
  6. [linux] 查看网络丢包信息
  7. PHP会话控制考察点
  8. 双十一!!作为程序员的你该如何拥有个人服务器和域名呢?
  9. js方法写在html中,在js中写html代码怎么写
  10. python线程执行完后释放内存_Python中的线程终止与内存释放
  11. Mac下IntelliJ IDEA常用快捷键
  12. ThinkPHP基础
  13. inkscape裁剪
  14. 学习漫画应该如何入门?其实掌握这5种漫画套路就可以啦
  15. 新款ipad你了解多少?
  16. 国产Linux系统再添一员猛将,颜值完全不输苹果!
  17. 聊天机器人简介与体验网址
  18. linux aio参数,linux内核aio功能
  19. 黑马程序员java学习打卡----程序流程控制
  20. vps系统和云服务器搭建,vps系统和云服务器搭建

热门文章

  1. 回顾经典-读《JavaScript高级程序设计》
  2. 计算机毕业设计django基于python的学生选课系统-高校教务管理系统(源码+系统+mysql数据库+Lw文档)
  3. 短路与和与、短路或和或的区别
  4. K8S CoreDNS
  5. Win11如何开启Telnet客户端?
  6. LOJ #573. 「LibreOJ NOI Round #2」单枪匹马 线段树
  7. 数据结构——试题整理
  8. FileZilla连接不上本地虚拟机的解决办法
  9. Java中创建目录 或 创建文件
  10. 【技术整合】各技术解决方案与对应解决的问题