问题:

当返回数据较多,如设置每页展示10条,数据接近200条,返回页码范围1~20,前端每个页码都显示的话,就会出现页码超出当前页面,被遮挡的页码无法操作和显示不美观;

代码优化:

在使用paginator转化为Page对象后,获取到num_pages:总的页码数,配合当前页码,进行判断

实现效果:

页面结合上下页和返回的pageRange,显示10个页码,并设置上下页,进行操作

代码实现:

动态返回页码逻辑:

如果当前页码-5,小于1,返回的页码范围: (1,11)

如果当前页码-5>1,且当前页码+5小于总页码,范围(当前页码-5,当前页码+5)

如果当前页码-5>1,且当前页码+5大于总页码,范围(当前页码-5,总的页码数+1)

views.py层代码

    def get(self, request):
p_index = int(request.GET.get('page', 1))
# 过滤状态等于0的数据
list = TestBatch.objects.filter(~Q(status=0)).all() page_count = 10
start = (p_index - 1) * page_count paginator = Paginator(list, page_count) currentPage = paginator.get_page(p_index).number data_p = paginator.page(p_index) # 页码超出12页时,前端显示页码会被遮挡,对页码进行处理,超出12时,返回指定规则的页码,上下页结合进行翻页
if paginator.num_pages > 12:
if currentPage - 5 < 1:
pageRange = range(1, 11)
elif currentPage + 5 > paginator.num_pages:
pageRange = range(currentPage - 5, paginator.num_pages+1)
else:
pageRange = range(currentPage - 5, currentPage + 5)
else:
pageRange = paginator.page_range
return render(request, 'page/batchList.html', {"batchs": data_p, "start": start, "currentPage": currentPage,"pageRange": pageRange})

配置html页面

Django Paginatior分页,页码过多,动态返回页码,页码正常显示的更多相关文章

  1. Python Django的分页,Form验证,中间件

    本节内容 Django的分页 Form 中间件 1 Django 分页 1.1 Django自带的分页 1.首先来看下我的测试数据环境 ############ models.py ######### ...

  2. Django 自定义分页类

    分页类代码: class Page(object): ''' 自定义分页类 可以实现Django ORM数据的的分页展示 输出HTML代码: 使用说明: from utils import mypag ...

  3. django之分页算法实现(Paginator)

    导入模块:from django.core.paginator import Paginator 一.Paginator的基本用法: from django.core.paginator import ...

  4. django之分页,纯python代码

    Django中分页 py文件代码 """ 自定义分页组件 可以返回分页的数据和分页的HTML代码 """ from django.http ...

  5. Django自定义分页

    分页 自定义分页 稳扎稳打版 def book(request): # 从URL取参数(访问的页码) page_num = request.GET.get("page") try: ...

  6. Django的分页和中间件

    一.分页 Django的分页器(paginator) view.py from django.shortcuts import render,HttpResponse # Create your vi ...

  7. WEB框架之Django实现分页功能

    一 Paginator分页器 1 首先在数据库中生成大量数据 def index(request) book_list = [] for i in rang(1000) book = Book(tit ...

  8. django项目分页

    测试版本 代码: # 测试分页users=[{'name':'alex{}'.format(i),'pwd':'aaa{}'.format(i)}for i in range(1,302)] def ...

  9. Django之分页升级版

    如果查询出的数据,被分页了,这个时候翻页的时候应该讲页数的参数和查询的参数一块在URL上显示 """ 分页器 """ from django ...

  10. 【django】分页

    分页 1.简单分页 from django.conf.urls import url from django.contrib import admin from app01 import views ...

随机推荐

  1. WPF 由于系统颜色配置 Mscms 组件损坏启动失败

    本文记录 WPF 应用程序,因为系统的颜色配置 Mscms.dll 组件损坏导致应用加载图片失败,从而启动失败的原因和解决方法 在 WPF 应用加载图片时,将会调用到系统的 Mscms.dll 组件. ...

  2. ASP.NET Core 将文件夹内容输出为压缩包文件方法

    本文主要是告诉大家一个省内存的方法,将整个文件夹的内容作为一个压缩包输出,但是实际上没有申请那么多的内存,也不需要升级创建一个压缩包文件.原理是通过逐个读文件然后按照压缩包格式输出 在每个请求的方法可 ...

  3. 通过 KoP 将 Kafka 应用迁移到 Pulsar

    通过 KoP 将 Kafka 应用迁移到 Pulsar 版权声明:原文出自 https://github.com/streamnative/kop ,由 Redisant 进行整理和翻译 目录 通过 ...

  4. js实现懒加载原理

    概念:对于页面有很多静态资源的情况下(比如网商购物页面),为了节省用户流量和提高页面性能,可以在用户浏览到当前资源的时候,再对资源进行请求和加载.原理:当图片元素的偏移高度<=设备高度+滚动条与 ...

  5. C语言:删除顺序表中重复的信息—(删除顺序表中重复的单词)

    如何删除顺序表中的重复单词: (开始看内容之前容朕说一句:如果你最后怎么都运行不了你想要的结果,①我敢保证大概率是你的下标越界你的下标越界了你的下标越界了.②在我这程序里面你肯定打少了p--,少了p- ...

  6. 物联网平台在AIoT领域8大场景应用

    物联网平台技术在AIoT智慧物联领域的应用越来越深入,尤其是在智慧城市建设项目中,提供了强有力的技术底座工具支撑.ToG的项目需要"门当户对"的服务商具备完善的资质和靠谱的技术服务 ...

  7. CMD程序_WordCount_博客改

    程序简介 这个程序只能以命令行的方式启动,在启动时要输入相应的命令.程序的功能是对文本文件的字符数,单词数,行数进行统计,将结果输出到默认文件或指定文件. 码云项目链接:WordCount 程序结构 ...

  8. QGIS开发笔记(二):Windows安装版二次开发环境搭建(上):安装OSGeo4W运行依赖其Qt的基础环境Demo

    前言   使用QGis的目的是进行二次开发,或者说是融入我们的应用(无人车.无人船.无人机),本片描述搭建QGis二次基础开发环境,由于实在是太长了,进行了分篇: 上半部分:主要是安装好后,使用QtC ...

  9. PhiData 一款开发AI搜索、agents智能体和工作流应用的AI框架

    引言 在人工智能领域,构建一个能够理解并响应用户需求的智能助手是一项挑战性的任务.PhiData作为一个开源框架,为开发者提供了构建具有长期记忆.丰富知识和强大工具的AI助手的可能性.本文将介绍Phi ...

  10. Django模型层Models的使用步骤

    1.安装pymysql(这里使用MySQL数据库) pip install pymysql 2.在Django的工程同名子目录的__init__.py文件中添加如下语句 from pymysql im ...