【插拔式】分页+bootstrap4(开源)
2024-10-01 21:45:05
1:分页源码
class Pagination(object):
def __init__(self, PagerCount,Pages, perPageItemNum, maxPageNum):
# 数据总个数
self.PagerCount = PagerCount
# 当前页
try:
v = int(Pages)
if v <= 0:
v = 1
self.current_Pages = v
except Exception as e:
self.current_Pages = 1 # 每页显示的行数
self.per_page_item_num = perPageItemNum
# 最多显示页面几个页面
self.max_Page_Num = maxPageNum #切片显示从多少开始
def start(self):
return (self.current_Pages - 1) * self.per_page_item_num # 切片显示从多少结束
def end(self):
return self.current_Pages * self.per_page_item_num #计算页面多余的个数的时候
@property # 直接填写self.num_pages 不用加括号
def num_pages(self):
# 总页数
a, b = divmod(self.PagerCount, self.per_page_item_num)
if b == 0:
return a
else:
return a + 1 # 最多显示maxPageNum个页面
def paper_num_range(self):
if self.num_pages < self.max_Page_Num:
return range(1, self.num_pages + 1)
# 总页数特别多
part = int(self.max_Page_Num / 2)
if self.current_Pages <= part:
return range(1, self.max_Page_Num + 1)
if (self.current_Pages + part) > self.num_pages:
return range(self.num_pages - self.max_Page_Num + 1, self.num_pages + 1)
return range(self.current_Pages - part, self.current_Pages + part + 1) def page_str(self):
page_list = [] #首页
# first = "<li><a href='/myself/project/?p=1'>首页</a></li>"
first = "<li class='page-item'><a class='page-link' href='/myself/project/?p=1'>首页</a></li>"
page_list.append(first) # 添加上一页
if self.current_Pages == 0:
# prev = "<li><a href='#'>上一页</a></li>"
prev = "<li class='page-item'><a class='page-link' href='#'>上一页</a></li>"
else:
prev = "<li class='page-item'><a class='page-link' href='/myself/project/?p=%s'>上一页</a></li>" %(self.current_Pages-1)
page_list.append(prev) #中间页码
for i in self.paper_num_range():
if i == self.current_Pages: #显示当前页样式
temp = "<li class='page-item active'><a class='page-link' href='/myself/project/?p=%s'>%s</a></li>" % (i, i)
else:
temp = "<li class='page-item'><a class='page-link' href='/myself/project/?p=%s'>%s</a></li>" % (i, i)
page_list.append(temp) #下一页
if self.current_Pages == self.num_pages:
nex = "<li class='page-item'><a class='page-link' href='#'>下一页</a></li>"
else:
nex = "<li class='page-item'><a class='page-link' href='/myself/project/?p=%s'>下一页</a></li>" %(self.current_Pages + 1)
page_list.append(nex) #尾页
end = "<li class='page-item'><a class='page-link' href='/myself/project/?p=%s'>尾页</a></li>" % (self.PagerCount)
page_list.append(end) #将上面的内容加入页面
return "".join(page_list)
2:分页的使用
1:导入本文件模块:
from 工程名.pager import Pagination
2:取到文章(需要分页的字段)列表:
article_list = models.Article.objects.all() //Article是文章的数据表
3:取到分页值(前端传的分页值):
P = request.GET.get("p") #这个直接复制
4:设置显示的参数:
#Pagination(数据库.count,当前页P = request.GET.get("p"),显示多少行, 最多显示多少页链接) #示例:对应Pagination的解释
pager_obj = Pagination(article_list.count(), P, 2, 10)
5:前端显示的多少列:
list = article_list[pager_obj.start():pager_obj.end()] #直接复制
6:返回数据给前端:
return render(request, "index.html",{"list":list,"pager_obj":pager_obj}) #直接复制
7:修改paging文件a标签路由:
示例:57行代码
href='/myself/project/?p=1'> #修改路由 其余的都需要修改对应的路由
8:模板的渲染:
{% for article in list %} 所有表里的数据可以从article.取值
3:传入参数的分页使用,扩展(当需要显示不同用户的个人列表),
在py文件中,添加第五个参数:username:
def __init__(self, PagerCount,Pages, perPageItemNum, maxPageNum,username):
self.username= username
#修改a标签参数:
href='/index/myblog/{}/?p=1'>首页</a></li>".format(self.username)
href='/index/myblog/%s/?p=%s'>上一页</a></li>" %(self.username,self.current_Pages-1)
最新文章
- H3C汇聚层交换机认证在线人数展示系统之需求说明和功能点说明
- nginx负载均衡最新
- Git subtree和Git submodule
- 【转】 JSONObject使用方法
- ORA-00205
- Linux的五个查找命令(find、locate、whereis、which、type)
- __attribute__ ((__section__ (";.init.text";)))
- 我的第一份vim程序
- [Javascrip] Logging Timing Data to the Console
- Working——流程关系状态表
- (转)js网址验证
- 大白话Vue源码系列(03):生成render函数
- Linux系统备份还原工具1(DD)
- MySQL的SQL预处理(Prepared)
- [ZJOI2011]最小割
- 彻底理解mysql服务器的字符集转换问题
- adr adrl ldr mov总结整理
- Word中摘要和正文同时分栏后,正文跑到下一页,怎么办?或Word分栏后第一页明明有空位后面的文字却自动跳到第二页了,怎么办?
- 字符串匹配的KMP算法(如何实现还需静下心来细看)
- poj_2186 强连通分支
热门文章
- 深入浅出 Java Concurrency (1) : J.U.C的整体认识[转]
- spring cloud深入学习(八)-----配置中心svn示例和refresh
- 转:Linux 2.4.x内核软中断机制
- eureka注册中心设置用户名密码
- host ngnix zull
- 微信小程序之threejs全景
- beego应用做纯API后端如何使用jwt实现无状态权限验证
- NKOJ1472 警卫安排
- (转)Sql server中 如何用sql语句创建视图
- django中的路由规则