news 2026/7/3 4:29:52

Django分页封装

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Django分页封装

page_data.py

from django.utils.safestring import mark_safe from copy import deepcopy class PageData: def __init__(self,request,queryset,page_size=1,page_num=3,page_param='page'): ''' request:请求 queryset:数据表的查询结果 pagesize:一页显示多少条数据 page_num:当前页面显示多少个页码 page_param:翻页参数 ''' get_query_dict=deepcopy(request.GET) self.query_dict=get_query_dict self.page_param=page_param page=request.GET.get(page_param,"1") if page.isdecimal(): page=int(page) else: page=1 self.page=page self.start=(page-1)*page_size self.end=page*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_count=page_count self.page_num=page_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.page==1: #首页 #上一页 page_list.append(f'<li class="disabled"><a href="?{self.query_dict.urlencode()}">首页</a></li>') page_list.append(f'<li class="disabled"><a href="?{self.query_dict.urlencode()}">上一页</a></li>') else: self.query_dict.setlist(self.page_param, [1]) page_list.append(f'<li><a class="page-first" href="?{self.query_dict.urlencode()}">首页</a></li>') self.query_dict.setlist(self.page_param, [self.page - 1]) page_list.append(f'<li><a href="?{self.query_dict.urlencode()}">上一页</a></li>') #页码 # 定义开始和结束页 for page_num_ye in range(start_page, end_page + 1): if page_num_ye==self.page: self.query_dict.setlist(self.page_param, [page_num_ye]) page_list.append(f'<li class="active"><a href="?{self.query_dict.urlencode()}">{page_num_ye}</a></li>') else: self.query_dict.setlist(self.page_param, [page_num_ye]) page_list.append(f'<li><a 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(f'<li><a href="?{self.query_dict.urlencode()}">下一页</a></li>') self.query_dict.setlist(self.page_param, [self.page_count]) page_list.append(f'<li><a class="page-first" href="?{self.query_dict.urlencode()}">尾页</a></li>') #下一页 #尾页 else: page_list.append(f'<li class="disabled"><a href="?{self.query_dict.urlencode()}">下一页</a></li>') page_list.append(f'<li class="disabled"><a href="?{self.query_dict.urlencode()}">尾页</a></li>') #跳转 # 跳转页 search_page = f""" <li class="page-jump"> <form method="get" class="form-inline"> <input type="number" name="{self.page_param}" min="1" value="{self.page}" placeholder="页码" class="form-control"> <button type="submit">跳转</button> </form> </li> """ page_list.append(search_page) # 将字符串传递给前端页面 page_str = mark_safe(''.join(page_list)) return page_str

views中引用

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)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/3 4:29:10

GPS是测试什么东西?

GPS 测的是&#xff1a;设备 GPS 定位模块/芯片能否正常工作&#xff0c;在 R&C 连续测试里属于 Mode A 第 10 项。 测什么 检查项 说明 GPS 开关 系统里 GPS 定位是否已开启 定位权限 是否有 ACCESS_FINE_LOCATION 能否定位 能否收到卫星信号并得到 经纬度 不是测 2G/3G/4…

作者头像 李华
网站建设 2026/7/3 4:26:23

机器学习特征工程实战:方法与避坑指南

1. 特征工程的核心价值第一次接触机器学习项目时&#xff0c;我犯了个典型错误——把所有时间都花在模型调参上&#xff0c;结果准确率死活上不去。直到导师提醒我"垃圾进&#xff0c;垃圾出"(Garbage in, garbage out)&#xff0c;才意识到特征质量才是模型效果的天…

作者头像 李华
网站建设 2026/7/3 4:24:30

创意桌面软件 第二部分

本软件纯属个人爱好&#xff0c;免费共享&#xff0c;请勿商用。 有兴趣的朋友可到网盘下载。后续会逐步完善下载更新方案 下载链接 花样图案介绍 创作中心 顶级创意组合 软件内置几种花样图案&#xff0c;旋转尘埃、时钟、时钟托盘、乒乓球游戏、跳舞 快捷访问&#xff…

作者头像 李华
网站建设 2026/7/3 4:19:26

宿迁老程面馆

想在宿迁找一家口碑在线、够专业的本地面馆&#xff1f;别被网红噱头、连锁套路轻易拿捏&#xff01;很多店看似人气高涨&#xff0c;实则藏着不少坑&#xff1a;预制菜浇头加热就端上桌、高汤靠工业增香剂调鲜、煮面水反复用导致浑汤发腻……今天就帮你对比几家热门面馆&#…

作者头像 李华
网站建设 2026/7/3 4:19:05

MiniMax 2.5 vs GLM-5:开发者真实编码场景下的AI编程模型实战评估

1. 项目概述&#xff1a;这不是一场参数游戏&#xff0c;而是开发者真实工作流的照妖镜“MiniMax 2.5 vs GLM-5 实测&#xff1a;开源AI编程巅峰对决&#xff0c;谁才是开发王者”——这个标题里藏着三个关键信号&#xff1a;MiniMax 2.5、GLM-5、开发王者。它不是在比谁的 ben…

作者头像 李华