Django 4.x 智能分页get_elided_page_range
Django智能分页
分页效果
- 第1页的效果

- 第10页的效果

- 带输入框的效果

主要函数
# 参数解释
# number: 当前页码,默认:1
# on_each_side:当前页码前后显示几页,默认:3
# on_ends:首尾固定显示几页,默认:2
Paginator.get_elided_page_range(number, on_each_side=3, on_ends=2)
代码部分
- 接口查询
# 获取列表信息
def events(request):event_list = Event.objects.all().order_by("-level", "-begin")# 分页部分的代码page_number = request.GET.get('page', 1)paginator = Paginator(event_list, 15)page_obj = paginator.get_page(page_number)page_range = paginator.get_elided_page_range(number=page_number, on_each_side=3, on_ends=2)return render(request, "events.html", {"page_obj": page_obj, "page_range": page_range})
- 前端展示
...
{#分页代码,业务代码请自行补充即可#}
{% if page_obj.has_other_pages %}<nav><ul class="pagination justify-content-center">{% if page_obj.has_previous %}<li class="page-item"><a class="page-link" href="?page={{ page_obj.previous_page_number }}">上一页</a></li>{% else %}<li class="page-item disabled"><a class="page-link" href="#">上一页</a></li>{% endif %}{% for item in page_range %}{% if item == page_obj.number %}<li class="page-item active"><a class="page-link" href="?page={{ item }}">{{ item }}</a></li>{% elif item == '...' %}<li class="page-item"><a class="page-link" href="#">{{ item }}</a></li>{% else %}<li class="page-item"><a class="page-link" href="?page={{ item }}">{{ item }}</a></li>{% endif %}{% endfor %}{% if page_obj.has_next %}<li class="page-item"><a class="page-link" href="?page={{ page_obj.next_page_number }}">下一页</a></li>{% else %}<li class="page-item disabled"><a class="page-link" href="#">下一页</a></li>{% endif %}</ul></nav>
{% endif %}
带输入框的效果部分代码
- 接口查询时添加了总页数
def events(request):event_list = Event.objects.all().order_by("-level", "-begin")# 分页部分的代码page_number = request.GET.get('page', 1)paginator = Paginator(event_list, 15)page_obj = paginator.get_page(page_number)num_pages = paginator.num_pages # 获取总共有多少页page_range = paginator.get_elided_page_range(number=page_number, on_each_side=3, on_ends=2)return render(request, "events.html", {"page_obj": page_obj, "page_range": page_range, "num_pages ":num_pages })
- 前端部分添加了输入框
{% if page_obj.has_other_pages %}<nav><ul class="pagination justify-content-center">{% if page_obj.has_previous %}<li class="page-item"><a class="page-link" href="?page={{ page_obj.previous_page_number }}">上一页</a></li>{% else %}<li class="page-item disabled"><a class="page-link" href="#">上一页</a></li>{% endif %}{% for item in page_range %}{% if item == page_obj.number %}<li class="page-item active"><a class="page-link" href="?page={{ item }}">{{ item }}</a></li>{% elif item == '...' %}<li class="page-item"><a class="page-link" href="#">{{ item }}</a></li>{% else %}<li class="page-item"><a class="page-link" href="?page={{ item }}">{{ item }}</a></li>{% endif %}{% endfor %}{% if page_obj.has_next %}<li class="page-item"><a class="page-link" href="?page={{ page_obj.next_page_number }}">下一页</a></li>{% else %}<li class="page-item disabled"><a class="page-link" href="#">下一页</a></li>{% endif %}# 对input输入进行了限制[1, num_pages],防止越界输入# <li class="page-item"> 共{{ num_pages }}页<label for="p_num"> 到第</label><input type="text" oninput="if(value>{{ num_pages }})value={{ num_pages }};if(value<0)value=1" id="p_num">页 </li>#这里引入了一个button点击事件#<li class="page-item"><button class="page-link" id="submit">确定</button></li></ul></nav>
{% endif %}
- 点击事件处理
// 就是一个跳转,本想在这里处理输入页码检查的,觉得麻烦就改成input上的输入限制了。$("#submit").click(function () {let page_number = $("#p_num").val();window.location.href=`?page=${page_number}` });
相关文章:
Django 4.x 智能分页get_elided_page_range
Django智能分页 分页效果 第1页的效果 第10页的效果 带输入框的效果 主要函数 # 参数解释 # number: 当前页码,默认:1 # on_each_side:当前页码前后显示几页,默认:3 # on_ends:首尾固定显示几页&#…...
java-spring 09 下.populateBean (方法成员变量的注入@Autowird,@Resource)
1.在populateBean 方法中的一部分:用于Autowird,Resource注入 // 后处理器已经初始化boolean hasInstAwareBpps hasInstantiationAwareBeanPostProcessors();// 需要依赖检查boolean needsDepCheck (mbd.getDependencyCheck() ! AbstractBeanDefinitio…...
赛氪网携手众机构助力第七届京津冀生态修复实践论坛圆满落幕
近日,由北京生态修复学会联合工业固废网、中国老科协国土资源分会共同主办,赛氪网作为支持单位的第七届京津冀生态修复实践论坛在北京温德姆酒店圆满落幕。本次论坛汇聚了众多行业专家、学者以及企业代表,共同探讨生态修复领域的新技术、新方…...
Naive RAG 、Advanced RAG 和 Modular RAG 简介
简介: RAG(Retrieval-Augmented Generation)系统是一种结合了检索(Retrieval)和生成(Generation)的机制,用于提高大型语言模型(LLMs)在特定任务上的表现。随…...
Python高级编程-DJango2
Python高级编程-DJango2 没有清醒的头脑,再快的脚步也会走歪;没有谨慎的步伐,再平的道路也会跌倒。 目录 Python高级编程-DJango2 1.显示基本网页 2.输入框的形式: 1)文本输入框 2)单选框 3ÿ…...
bash脚本 报错:/bin/bash^M:解释器错误: 没有那个文件或目录
bash脚本 报错:/bin/bash^M:解释器错误: 没有那个文件或目录 出现这个问题是因为该脚本文件在windows下编辑过 在windows下,每一行的结尾是\n\r,而在linux下文件的结尾是\n,那么你在windows下编辑过的文件在linux下打…...
win10专业版远程桌面连接不上,win10专业版远程桌面连接不上常见原因与解决方法
Win10专业版远程桌面连接功能是一项非常实用的工具,它允许用户远程访问和操作另一台计算机。然而,有时在尝试进行远程桌面连接时,可能会遇到连接不上的情况。本文将分析导致这一问题的常见原因,并提供相应的解决方法。 一、常见原…...
前端 日期 new Date 少0 转换成 yyyy-MM-dd js vue
在console控制台直接输出new Date(),是这样: Fri May 10 2024 23:36:06 GMT0800 (中国标准时间) 输出new Date().toLocaleString(),是这样: 2024/5/10 23:36:06 输出new Date().toISOString(),是这样: …...
Linux中的磁盘分析工具ncdu
2024年5月14日,周二上午 概述 ncdu 是一个基于文本的用户界面磁盘使用情况分析工具。它可以在终端中快速扫描目录,并统计该目录下的文件和文件夹的磁盘使用情况,以交互友好的方式呈现给用户。 安装 在 Debian/Ubuntu 系统下,可…...
Angular入门
Angular版本:Angular 版本演进史概述-天翼云开发者社区 - 天翼云 安装nodejs:Node.js安装与配置环境 v20.13.1(LTS)-CSDN博客 Angular CLI是啥 Angular CLI 是一个命令行接口(Angular Command Line Interface),是开发 Angular 应用的最快、最…...
Java进阶11 IO流、功能流
Java进阶11 IO流-功能流 一、字符缓冲流 字符缓冲流在源代码中内置了字符数组,可以提高读写效率 1、构造方法 方法说明BufferedReader(new FileReader(文件路径))对传入的字符输入流进行包装BufferedWriter(new FileWriter(文件路径))对传入的字符输出流进行包装…...
windows 安装 Conda
1 Conda简介 Conda 是一个开源的软件包管理系统和环境管理系统,用于安装多个版本的软件包及其依赖关系,并在它们之间轻松切换。Conda 是为 Python 程序创建的,适用于 Linux,OS X 和Windows,也可以打包和分发其他软件。一般用conda来维护多个python版本。 2 安装…...
IPsec VPN简介
什么是IPsec? IPsec(Internet Protocol Security)是为IP网络提供安全性的协议和服务的集合,它是VPN(Virtual Private Network,虚拟专用网)中常用的一种技术。其实就是一种协议簇(类…...
探索 Canva 的功能以及如何有效使用 Canva
『创意瞬间变现!Canva AI Drawing 让你的文字描绘成艺术』 在数字设计和创意领域,Canva 是创新和用户友好性的灯塔。这个平台不仅简化了图形设计,还引入了 AI Drawing 等强大工具,使其成为专业人士和初学者的首选解决方案。让我们…...
python中匿名函数简单样例
目录 一、匿名函数(也称为 lambda 函数): 二、简单样例: 2.1 filter() 函数: 2.2 map() 函数: 2.3 sorted() 函数: 一、匿名函数(也称为 lambda 函数): 简洁性:匿名函数通常比命…...
【SpringBoot】 什么是springboot(二)?springboot操作mybatisPlus、swagger、thymeleaf模板
文章目录 SpringBoot第三章1、整合mybatsPlus1-234-67-10问题 2、整合pageHelper分页3、MP代码生成器1、编写yml文件2、导入依赖3、创建mp代码生成器4、生成代码5、编写配置类扫描mapper类6、编写控制器类 4、swagger1、什么是swagger2、作用3、发展历程4、一个简单的swagger项…...
【JavaWeb】前后端分离SpringBoot项目快速排错指南
1 发起业务请求 打开浏览器开发者工具,同时显示网络(Internet)和控制台(console) 接着,清空控制台和网络的内容,如下图 然后,点击你的业务按钮,发起请求。 首先看控制台…...
Go语言高级特性
目录 1. 并发编程 1.1 Goroutine轻量级线程 1.2 Channel通信机制 1.3 WaitGroup等待组 1.4 Mutex互斥锁 2. 垃圾回收机制 2.1 内存管理介绍 2.2 垃圾回收原理 2.3 性能调优策略 2.4 常见问题及解决方案 3. 接口与反射 3.1 接口定义与实现 3.2 空接口与类型断言 3…...
边缘计算安全有多重要
德迅云安全研究发现边缘安全是对存储或处理在网络边缘的数据的保护。边缘可以用不同的方式定义,但一般来说,它包括企业直接控制之外的任何设备或位置。这可能包括传感器、连接物联网的设备和移动设备。 边缘计算正在彻底改变商业运作方式。这引发了对边缘…...
Uniapp开发入门:构建跨平台应用的全面指南
引言 什么是Uniapp Uniapp是一款由DCloud公司推出的基于Vue.js的跨平台应用开发框架。它的核心理念是“一套代码,多端运行”,开发者只需编写一份代码,即可生成包括iOS、Android、H5、微信小程序、支付宝小程序、百度小程序等多平台的应用。…...
nanobot轻量级OpenClaw部署:支持LoRA微调接口(/api/finetune)预留设计
nanobot轻量级OpenClaw部署:支持LoRA微调接口(/api/finetune)预留设计 1. nanobot简介:超轻量级个人AI助手 nanobot是一款受OpenClaw启发的超轻量级个人人工智能助手,仅需约4000行代码即可提供核心代理功能ÿ…...
通过观察nRF52服务的回调,解释两种回调函数的区别,以及为什么看不到他们回调函数的调用
一、nRF52的两种回调我们在服务初始化的时候,会有回调函数的传入这个回调到底是干什么的?简单来说: 它是你告诉服务:“当这个服务发生重要事情时,请通知我(调用我的这个函数)”。具体作用&#…...
Intv_AI_MK11 多模型协作展望:与Claude等模型的能力对比与互补
Intv_AI_MK11 多模型协作展望:与Claude等模型的能力对比与互补 1. 当前AI模型生态概览 AI领域正在经历前所未有的繁荣发展,各种大模型如雨后春笋般涌现。在这个多元化的生态系统中,每个模型都有其独特的优势和应用场景。Intv_AI_MK11作为新…...
FPGA+CMV4000实战:从零搭建20fps成像系统的5个关键步骤(附避坑指南)
FPGACMV4000实战:从零搭建20fps成像系统的5个关键步骤(附避坑指南) 在嵌入式视觉开发领域,将高性能图像传感器与FPGA相结合构建定制化成像系统,正成为工业检测、科研仪器等专业场景的主流选择。CMV4000作为CMOSIS&…...
深入JESD204B子类1/2与时钟域:FPGA高速数据采集中的Sysref与多帧边界实战解析
深入JESD204B子类1/2与时钟域:FPGA高速数据采集中的Sysref与多帧边界实战解析 在高速数据采集系统的设计中,JESD204B协议已成为连接高速ADC/DAC与FPGA的事实标准。对于雷达、无线通信等对时序要求极为严苛的应用场景,仅仅实现链路连通是远远不…...
Supabase注册与新增用户全解析:5个关键区别及适用场景指南
Supabase用户管理系统设计指南:注册与手动创建的5大核心差异 在构建现代SaaS平台时,用户管理系统往往是整个架构的基石。Supabase作为开源的Firebase替代方案,提供了完整的认证和用户管理解决方案。但很多开发者在使用过程中,常常…...
HC-SR04测距不准?STM32定时器输入捕获模式详解与精度提升技巧
HC-SR04测距不准?STM32定时器输入捕获模式详解与精度提升技巧 超声波测距模块HC-SR04因其低成本、易用性在嵌入式领域广泛应用,但许多开发者发现实际测量结果常出现波动大、数据不准的问题。本文将深入分析误差来源,并基于STM32定时器的输入捕…...
PTA刷题实战:如何用C++判断一个序列是二叉搜索树的前序遍历?
从PTA真题解析二叉搜索树前序序列的判定与转换策略 二叉搜索树(BST)作为数据结构中的经典问题,在各类算法考试和面试中频繁出现。PTA平台上这道"搜索树判断"题目,要求我们验证一个序列是否构成某棵二叉搜索树或其镜像的…...
Unity3D实战:从零构建竖屏飞机大战游戏
1. 竖屏游戏的基础设置 第一次打开Unity时,默认是横屏模式。我们需要做的第一件事就是把游戏改成竖屏。这个操作看似简单,但很多新手容易忽略几个关键点。在Game窗口右上角找到分辨率设置,点击加号新建一个预设。这里要特别注意选择"Asp…...
OpenClaw长期运行方案:Phi-3-mini-128k-instruct服务的稳定性保障
OpenClaw长期运行方案:Phi-3-mini-128k-instruct服务的稳定性保障 1. 为什么需要长期运行方案? 去年冬天的一个深夜,我被手机警报惊醒——部署在家庭服务器的OpenClaw服务崩溃了。当时正在运行的自动化周报生成任务因此中断,导致…...
