Django分页封装
page_data.pyfrom django.utils.safestring import mark_safe from copy import deepcopy class PageData: def __init__(self,request,queryset,page_size1,page_num3,page_parampage): request:请求 queryset:数据表的查询结果 pagesize:一页显示多少条数据 page_num:当前页面显示多少个页码 page_param:翻页参数 get_query_dictdeepcopy(request.GET) self.query_dictget_query_dict self.page_parampage_param pagerequest.GET.get(page_param,1) if page.isdecimal(): pageint(page) else: page1 self.pagepage self.start(page-1)*page_size self.endpage*page_size self.page_queryset queryset[self.start:self.end] page_count queryset.count() #一共要显示多少页 page_count, yushu divmod(page_count, page_size) if yushu: page_count 1 self.page_countpage_count self.page_numpage_num def page_html(self): # 判断数据表当中的数据总共能否展示7页 if self.page_count self.page_num * 2 1: start_page 1 end_page self.page_count else: # 当前选中的页面小于三 if self.page self.page_num: start_page 1 end_page 2 * self.page_num 1 else: # 当前选中的页面如果是最后三页 if (self.page self.page_num) self.page_count: start_page self.page_count - 2 * self.page_num end_page self.page_count else: start_page self.page - self.page_num end_page self.page self.page_num # 存放html代码 page_list [] self.query_dict.setlist(self.page_param,[1]) if self.page1: #首页 #上一页 page_list.append(fli classdisableda href?{self.query_dict.urlencode()}首页/a/li) page_list.append(fli classdisableda href?{self.query_dict.urlencode()}上一页/a/li) else: self.query_dict.setlist(self.page_param, [1]) page_list.append(flia classpage-first href?{self.query_dict.urlencode()}首页/a/li) self.query_dict.setlist(self.page_param, [self.page - 1]) page_list.append(flia href?{self.query_dict.urlencode()}上一页/a/li) #页码 # 定义开始和结束页 for page_num_ye in range(start_page, end_page 1): if page_num_yeself.page: self.query_dict.setlist(self.page_param, [page_num_ye]) page_list.append(fli classactivea href?{self.query_dict.urlencode()}{page_num_ye}/a/li) else: self.query_dict.setlist(self.page_param, [page_num_ye]) page_list.append(flia href?{self.query_dict.urlencode()}{page_num_ye}/a/li) if self.page self.page_count: self.query_dict.setlist(self.page_param, [self.page 1]) page_list.append(flia href?{self.query_dict.urlencode()}下一页/a/li) self.query_dict.setlist(self.page_param, [self.page_count]) page_list.append(flia classpage-first href?{self.query_dict.urlencode()}尾页/a/li) #下一页 #尾页 else: page_list.append(fli classdisableda href?{self.query_dict.urlencode()}下一页/a/li) page_list.append(fli classdisableda href?{self.query_dict.urlencode()}尾页/a/li) #跳转 # 跳转页 search_page f li classpage-jump form methodget classform-inline input typenumber name{self.page_param} min1 value{self.page} placeholder页码 classform-control button typesubmit跳转/button /form /li page_list.append(search_page) # 将字符串传递给前端页面 page_str mark_safe(.join(page_list)) return page_strviews中引用from utils_app.utils.page_data import PageData #方法中 userlist models.UserInfo.objects.filter(**data_dict) data PageData(request,userlist) content { userlist:data.page_queryset, page_str:data.page_html() } return render(request, admin/admin.html,content)

相关新闻

贴合厂房工况 给廊坊食品无尘车间选择净化板

贴合厂房工况 给廊坊食品无尘车间选择净化板

廊坊紧邻京津,本地聚集大量加工企业,食品净化车间、无尘厂房新建改造需求常年稳定。不少采购负责人挑选净化板只对比出厂价格,忽略本地车间蒸汽大、频繁冲洗消杀、昼夜温差大的特点,低价洁净墙板使用不久就出现板面生锈、板材吸水…

2026/7/3 4:27:12 阅读更多 →
企业AI生产遇瓶颈,可观测性工具如何升级破局?

企业AI生产遇瓶颈,可观测性工具如何升级破局?

AI可观测性:现状与挑战 这看似是个简单的问题,但如今却没有令人满意的答案。随着企业纷纷将AI投入生产,发现用于监控传统软件的工具无法直接应用于AI系统。根本原因在于,AI出现故障的方式与软件不同,它不会抛出清晰的错…

2026/7/3 4:25:11 阅读更多 →
TD3 护照识别难点分析及兴通物联多形态护照识别设备集成实践

TD3 护照识别难点分析及兴通物联多形态护照识别设备集成实践

TD3 规格护照 MRZ 机读码是涉外身份核验的核心采集对象,两行 44 位固定格式字符对扫码设备光学成像、OCR 纠错算法、环境抗干扰能力提出较高门槛。不少项目采用通用扫码设备采集时常出现反光误读、识别成功率偏低、系统适配受限等问题。本文从 MRZ 识别技术难点出发…

2026/7/3 4:25:11 阅读更多 →

最新新闻

电驱蚊器有毒吗?最先进的灭蚊神器是什么牌子?十款质量不错灭蚊器榜单对比实测! 避坑贴!

电驱蚊器有毒吗?最先进的灭蚊神器是什么牌子?十款质量不错灭蚊器榜单对比实测! 避坑贴!

​近期,随着东南亚及国内多地爆发基孔肯雅热疫情,这种由伊蚊传播的病毒性疾病再次为居家防蚊敲响警钟。不少人终于意识到,一台靠谱的灭蚊器不只是夏天的“小麻烦解决者”,更是守护家人健康的重要防线。 然而,面对市面上…

2026/7/3 5:29:26 阅读更多 →
pgsql自增序列

pgsql自增序列

1.从1开始自增。插入数据无需插入id,id即可自增,步长默认是1,也可设置步长。 2.如有业务需求,需要手动指定id,则插入数据后,必须设置下次自增id的开始值,如果不设置,则旧的自增id游标…

2026/7/3 5:27:25 阅读更多 →
AI大模型选型实战指南:成本、稳定性和数据安全三维决策

AI大模型选型实战指南:成本、稳定性和数据安全三维决策

1. 这不是“排行榜”,而是我用掉37个API密钥、跑通21个生产环境后筛出来的实战清单你点开这篇文章,大概率不是想看又一篇泛泛而谈的“2024十大AI模型推荐”。你可能刚被老板甩来一句“用AI写周报/改PPT/生成产品文案”,也可能在深夜调试RAG系…

2026/7/3 5:23:25 阅读更多 →
处理医疗废水要安装在线监测设备吗?

处理医疗废水要安装在线监测设备吗?

我国一些场所早已要求一些排放重点水污染物处理区安装水质在线监测设备,其中处于环境敏感的地区以及是市或地级以上环境保护行政部门列为重点污染源的排放单位,这些都是必须要安装水质监测设备的。那么处理医疗废水要安装在线监测设备吗?答案…

2026/7/3 5:19:24 阅读更多 →
机器学习数据类型诊断:标称型、序数型、区间型、比率型与时间型实战指南

机器学习数据类型诊断:标称型、序数型、区间型、比率型与时间型实战指南

1. 项目概述:为什么搞懂数据类型是机器学习落地的第一道门槛“Types of data in Machine Learning Explained”——这个标题看似平实,甚至有点教科书味,但在我带过37个工业级ML项目、亲手清洗过超过120TB原始数据的实战经验里,它恰…

2026/7/3 5:19:24 阅读更多 →
使用 VMware虚拟机安装 Ubuntu Linux 完整教程

使用 VMware虚拟机安装 Ubuntu Linux 完整教程

一、什么是 Linux 操作系统Linux 是一款开源免费、多用户、多任务的类 Unix 操作系统内核,1991 年由芬兰大学生 Linus Torvalds 开发发布。核心特点完全开源:代码公开,任何人可查看、修改、二次分发,无版权收费;稳定性…

2026/7/3 5:17:24 阅读更多 →

日新闻

Nginx防御TLS重协商攻击实战:从原理到配置与监控

Nginx防御TLS重协商攻击实战:从原理到配置与监控

1. 项目概述:为什么TLS重协商攻击至今仍需警惕十多年前的CVE-2011-1473,一个关于TLS/SSL协议重协商机制的漏洞,现在提起来还有必要吗?很多运维和开发朋友可能会觉得,这都老掉牙了,现代服务器和客户端不都默…

2026/7/3 0:03:59 阅读更多 →
华为防火墙双通道远程管理实战:Web与SSH配置详解

华为防火墙双通道远程管理实战:Web与SSH配置详解

1. 项目概述:为什么需要双通道远程管理防火墙?在任何一个稍具规模的企业网络里,防火墙都是那个默默守护在边界的关键角色。作为网络工程师,我们不可能每次都跑到机房,插上console线去配置它。远程管理能力,…

2026/7/3 0:03:59 阅读更多 →
AD74413R与PIC18F65K40的高精度工业数据采集方案

AD74413R与PIC18F65K40的高精度工业数据采集方案

1. 项目概述:AD74413R与PIC18F65K40的协同工作在工业自动化和精密测量领域,同时实现高精度模数转换(ADC)和数模转换(DAC)功能是许多复杂系统的核心需求。AD74413R作为一款四通道可配置模拟输入/输出器件,与PIC18F65K40微控制器的组合&#xf…

2026/7/3 0:05:59 阅读更多 →

周新闻

月新闻