首页 > 其他分享 >django的paginator都是假分页,数据量大很卡

django的paginator都是假分页,数据量大很卡

时间:2023-11-07 10:48:29浏览次数:34  
标签:paginator obj name list django item 数据量 data page

paginator 使用

    def get(self, request, *args, **kwargs):
        rs_data = {
            'count': 0,
            'items': []
        }

        page = int(self.request.GET.get('page', 1))
        page_size = int(self.request.GET.get('page_size', 10))
        name = self.request.GET.get('name')

        obj_list = Slider.objects.order_by('sort', '-add_datetime')
        if name:
            obj_list = obj_list.filter(name__icontains=name)
        if obj_list:
            rs_data['count'] = obj_list.count()
            pnr = Paginator(obj_list, page_size)
            try:
                item_obj = pnr.page(page)
            except EmptyPage:
                item_obj = pnr.page(pnr.num_pages)
            for item in item_obj:
                tmp_data = {
                    'uuid': item.uuid,
                    'add_datetime': item.add_datetime,
                    'name': item.name,
                    'img': item.img,
                    'sort': item.sort,
                    'link': item.link,
                }
                rs_data['items'].append(tmp_data)
        return JsonResponse(rs_data)

django对mysql的分页查询其实就是使用切片实现的

      def get(self, request, *args, **kwargs):
        rs_data = {
            'count': 0,
            'items': []
        }

        page = int(self.request.GET.get('page', 1))
        page_size = int(self.request.GET.get('page_size', 10))
        name = self.request.GET.get('name')

        obj_list = Slider.objects.order_by('sort', '-add_datetime')
        if name:
            obj_list = obj_list.filter(name__icontains=name)
       
        limit = (page - 1) * page_size
        offset = page * page_size
        rs_data['count'] = obj_list.count()
        obj_list = obj_list[limit: offset]

        if obj_list:
            for item in obj_list:
                tmp_data = {
                    'uuid': item.uuid,
                    'add_datetime': item.add_datetime,
                    'name': item.name,
                    'img': item.img,
                    'sort': item.sort,
                    'link': item.link,
                }
                rs_data['items'].append(tmp_data)
        return JsonResponse(rs_data)

标签:paginator,obj,name,list,django,item,数据量,data,page
From: https://www.cnblogs.com/guanchaoguo/p/17814467.html

相关文章

  • Django动态创建表模型,并使用drf
    序列化器fromrest_frameworkimportserializersclassMySerializer(serializers.ModelSerializer):"""序列化器"""classMeta:model=None#可以设置为None,动态生成之后,再通过反射来重新设置。fields='__all__'......
  • Django查询之—— Q查询
    Q查询 作用:filter的字段筛选条件指定多个,默认是and连接.要实现or或者not需要借助Q查询首先要导入模块fromdjango.db.modelsimportQQ(字段__条件=值) 连接条件:andornot#and的3种情况1.filter中指定多个参数逗号隔开:filter(参数1,参数2)......
  • Django查询之—— F查询
    F查询 作用:能够帮助你直接获取到表中某个字段对应的数据首先要导入模块fromdjango.db.modelsimportF 用法一:查询卖出数大于库存数的书籍res=models.Book.objects.filter(sale__gt=F('stock'))print(res)用法二:将所有书籍的价格提升500块res=mode......
  • django+爬虫+钉钉机器人
    Views类urls类Html结果......
  • Django实战项目-学习任务系统-配置定时调度任务
    接着上期代码内容,继续完善优化系统功能。 本次增加配置定时调度任务功能,学习任务系统定时任务管理添加的定时学习任务,需要通过配置调度任务,定时发布周期性的学习任务。以及每天定时发送学生用户属性值,积分值等信息到学生用户知晓。以及其他需要定时调度的任务都可以配置到定时......
  • 饮冰三年-人工智能-Django淘宝拾遗-86- Django Debug Toolbar调试工具
       在开发Django应用程序时,调试是不可或缺的一部分。DjangoDebugToolbar是一个强大的调试工具,可以帮助开发者深入了解应用程序的性能和执行细节。本文将介绍DjangoDebugToolbar的安装步骤以及如何在Django应用程序中使用该工具。项目使用的是github上开源的项目......
  • Django 表单处理:从前端到后台的全流程指南
    Django作为一个高级PythonWeb框架,它的表单处理能力强大,可以有效地处理用户输入,进行数据验证以及错误处理。本文将详细介绍如何在Django中创建、处理和使用表单。1.Django表单系统的核心Django的表单系统处理表单的生命周期,涉及以下核心部分:表单类:定义表单的结构和行为。验......
  • 【django框架】共4大模块50页md学习文档 第3篇:django路由和网络请求使用详解
    当你考虑开发现代化、高效且可扩展的网站和Web应用时,Django是一个强大的选择。Django是一个流行的开源PythonWeb框架,它提供了一个坚实的基础,帮助开发者快速构建功能丰富且高度定制的Web应用全套Django笔记直接地址:请移步这里共10章,31子模块,总计2w余字路由配置学习目......
  • 音乐推荐与管理系统Python+Django网页界面+协同过滤推荐算法
    一、介绍音乐推荐与管理系统。本系统采用Python作为主要开发语言,前端使用HTML、CSS、BootStrap等技术搭建界面平台,后端使用Django框架处理请求,并基于Ajax等技术实现前端与后端的数据通信。在音乐个性推荐功能模块中采用通过Python编写协同过滤推荐算法模块,实现对当前登录用户的个性......
  • 音乐推荐与管理系统Python+Django网页界面+协同过滤推荐算法
    一、介绍音乐推荐与管理系统。本系统采用Python作为主要开发语言,前端使用HTML、CSS、BootStrap等技术搭建界面平台,后端使用Django框架处理请求,并基于Ajax等技术实现前端与后端的数据通信。在音乐个性推荐功能模块中采用通过Python编写协同过滤推荐算法模块,实现对当前登录用户的个......