【插拔式】分页+bootstrap4(开源)
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)


【插拔式】分页+bootstrap4(开源)的更多相关文章
- jq分页插件,支持动态,静态分页的插件,简单易用。
工作中经常要用到分页功能.为了方便封装了一个比较通用的分页插件开源出来了,简单易用. 官网:https://cwlch.github.io/Ch_Paging 下载地址:https://github. ...
- jqPaginator-master | kkpager-master 这两个分页插件的使用方法
首先:百度"分页插件" 就会 找到这条链接: url=X8P3UpOM-6ceSfjdngX0oh9cNmVwSDy94CxKqWIazhyZ7If4S8wgpPqyEGUhk2t ...
- 解放双手,不写SQL!一个开源mybatis神器
什么是通用 Mapper? 它是一个可以方便的使用 Mybatis 进行单表的增删改查优秀开源产品.它使用拦截器来实现具体的执行 Sql,完全使用原生的 Mybatis 进行操作.在 Github 上 ...
- MVC如何使用开源分页插件shenniu.pager.js
最近比较忙,前期忙公司手机端接口项目,各种开发+调试+发布现在几乎上线无问题了:虽然公司项目忙不过在期间抽空做了两件个人觉得有意义的事情,一者使用aspnetcore开发了个人线上项目(要说线上其实只 ...
- 基于存储过程的MVC开源分页控件--LYB.NET.SPPager
摘要 现在基于ASP.NET MVC的分页控件我想大家都不陌生了,百度一下一大箩筐.其中有不少精品,陕北吴旗娃杨涛大哥做的分页控件MVCPager(http://www.webdiyer.com/)算 ...
- .NET平台开源项目速览(7)关于NoSQL数据库LiteDB的分页查询解决过程
在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑) 与 .NET平台开源项目速览(3)小巧轻量级NoSQL文件数据库LiteDB中,介绍了LiteDB的基本使用情况以及部 ...
- [js开源组件开发]ajax分页组件
ajax分页组件 我以平均每一周出一个开源的js组件为目标行动着,虽然每个组件并不是很庞大,它只完成某一个较小部分的工作,但相信,只要有付出,总会得到回报的.这个组件主要完成分页的工作. 这张图里显示 ...
- 基于存储过程的MVC开源分页控件
基于存储过程的MVC开源分页控件--LYB.NET.SPPager 摘要 现在基于ASP.NET MVC的分页控件我想大家都不陌生了,百度一下一大箩筐.其中有不少精品,陕北吴旗娃杨涛大哥做的分页控件M ...
- MvcPager 免费开源分页控件3.0版发布!
MvcPager 3.0版在原2.0版的基础上进行了较大的升级,对MvcPager脚本插件重写并进行了大量优化.修复了部分bug并新增了客户端Javascript API等功能,使用更方便,功能更强大 ...
随机推荐
- spring cloud深入学习(十一)-----服务网关zuul
前面的文章我们介绍了,Eureka用于服务的注册于发现,Feign支持服务的调用以及均衡负载,Hystrix处理服务的熔断防止故障扩散,Spring Cloud Config服务集群配置中心,似乎一个 ...
- IO流 复制文件及文件夹
package io; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; im ...
- KOA 学习(四)
响应(Response) Koa Response 对象是对 node 的 response 进一步抽象和封装,提供了日常 HTTP 服务器开发中一些有用的功能. response.header Re ...
- 使用alibaba的json工具将String类型转为JSONArray类型
转化流程:先将输入流转为String类型,再使用alibaba的json转换工具,将字符串转化为json数组 SensorDevices sensorDevices = new SensorDevic ...
- jmeter断言步骤
在POST /wordpress/wp-login.php请求,也就是名称为submit login form user的请求上点右键, 选择添加 -> 后置处理器 -> CSS/JQue ...
- Effective Modern C++ 条款4:掌握查看型别推导结果的方法
采用何种工具来查看型别推导结果,取决于你在软件开发过程的哪个阶段需要该信息.主要研究三个可能的阶段:撰写代码阶段.编译阶段.运行时阶段. IDE编译器 IDE中的代码编译器通常会在你将鼠标指针选停止某 ...
- TZ_02MyBatis_lazy SqlMapConfig.xml
Mybatis的延迟加载又称为懒加载 mybatis在一对多的查询中,例如查询一个用户时需要查询这个用户下的所有账户信息,如果一次性的select * from user u left join ac ...
- Http中GET和POST请求的区别
https://mp.weixin.qq.com/s/_oLnkDQn3TE7XdFWCT5Img GET请求 GET /books/?sex=man&name=Professional HT ...
- JavaScript 面试:什么是纯函数?
原文:Eric Elliott 译文:众成翻译 www.zcfy.cc/article/master-the-javascript-interview-what-is-a-pure-function ...
- go语言:获取字符串长度
go语言字符串底层由字节数组实现,使用UTF-8编码,初始化以后不能被修改 获取字符串长度 一.当字符串中所有字符都是单字节字符时,使用 len 函数获取字符串的长度 package main imp ...