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(开源)的更多相关文章

  1. jq分页插件,支持动态,静态分页的插件,简单易用。

    工作中经常要用到分页功能.为了方便封装了一个比较通用的分页插件开源出来了,简单易用. 官网:https://cwlch.github.io/Ch_Paging 下载地址:https://github. ...

  2. jqPaginator-master | kkpager-master 这两个分页插件的使用方法

    首先:百度"分页插件" 就会 找到这条链接: url=X8P3UpOM-6ceSfjdngX0oh9cNmVwSDy94CxKqWIazhyZ7If4S8wgpPqyEGUhk2t ...

  3. 解放双手,不写SQL!一个开源mybatis神器

    什么是通用 Mapper? 它是一个可以方便的使用 Mybatis 进行单表的增删改查优秀开源产品.它使用拦截器来实现具体的执行 Sql,完全使用原生的 Mybatis 进行操作.在 Github 上 ...

  4. MVC如何使用开源分页插件shenniu.pager.js

    最近比较忙,前期忙公司手机端接口项目,各种开发+调试+发布现在几乎上线无问题了:虽然公司项目忙不过在期间抽空做了两件个人觉得有意义的事情,一者使用aspnetcore开发了个人线上项目(要说线上其实只 ...

  5. 基于存储过程的MVC开源分页控件--LYB.NET.SPPager

    摘要 现在基于ASP.NET MVC的分页控件我想大家都不陌生了,百度一下一大箩筐.其中有不少精品,陕北吴旗娃杨涛大哥做的分页控件MVCPager(http://www.webdiyer.com/)算 ...

  6. .NET平台开源项目速览(7)关于NoSQL数据库LiteDB的分页查询解决过程

    在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑) 与 .NET平台开源项目速览(3)小巧轻量级NoSQL文件数据库LiteDB中,介绍了LiteDB的基本使用情况以及部 ...

  7. [js开源组件开发]ajax分页组件

    ajax分页组件 我以平均每一周出一个开源的js组件为目标行动着,虽然每个组件并不是很庞大,它只完成某一个较小部分的工作,但相信,只要有付出,总会得到回报的.这个组件主要完成分页的工作. 这张图里显示 ...

  8. 基于存储过程的MVC开源分页控件

    基于存储过程的MVC开源分页控件--LYB.NET.SPPager 摘要 现在基于ASP.NET MVC的分页控件我想大家都不陌生了,百度一下一大箩筐.其中有不少精品,陕北吴旗娃杨涛大哥做的分页控件M ...

  9. MvcPager 免费开源分页控件3.0版发布!

    MvcPager 3.0版在原2.0版的基础上进行了较大的升级,对MvcPager脚本插件重写并进行了大量优化.修复了部分bug并新增了客户端Javascript API等功能,使用更方便,功能更强大 ...

随机推荐

  1. jqurey相册放大浏览效果。

    /*图片弹窗与切换*/ function honorLayer(){ var honorArray = honorArr(); var $msk = $('.js-mask'),$layer = $( ...

  2. ArcGIS 10.2 for Server 集群部署

    ArcGIS 10.2 for Server 具有很灵活的体系结构,而 ArcGIS 10.2  forServer site 可以包含一台或多台安装 GIS Server 的机器,这些参与ArcGI ...

  3. 一键清理系统垃圾文件bat

    历史比较久远了,可做一定参考. @echo off echo 正在清理系统垃圾文件,请稍等...... del /f /s /q %systemdrive%*.tmp del /f /s /q %sy ...

  4. day67test

    作业 1.按照上方 知识点总结 模块,总结今天所学知识点: 2.有以下广告数据(实际数据命名可以略做调整) ad_data = { tv: [ {img: 'img/tv/001.png', titl ...

  5. HBase的一些关于CRUD方法

    配置内容 static{configuration = HBaseConfiguration.create();  //创建配置文件(也就是load工程包目录下的配置文件hbase-site.xml) ...

  6. 2018-10-20-C#-从零开始写-SharpDx-应用-初始化dx修改颜色

    title author date CreateTime categories C# 从零开始写 SharpDx 应用 初始化dx修改颜色 lindexi 2018-10-20 17:34:37 +0 ...

  7. python利用paramiko执行服务器命令

    话不多说直接上代码 封装连接 @staticmethod def connect(ip, server_user, server_port, server_path): ""&qu ...

  8. 前端(jQuery)(9)-- jQuery菜单

    1.垂直菜单布局 2.垂直菜单实现 <!DOCTYPE html> <html lang="en"> <head> <meta chars ...

  9. 八大 IoT 安全关键技术解析

    IoT 设备的增长也伴随着网络攻击的风险的增长,因此在设计产品时就必须考虑到系统的安全. 高德纳咨询公司最近的报告预测,到 2020 年,全世界将有 200.4 亿的物联网设备相互连接,且平均每天约还 ...

  10. mybatis深入理解(二)-----Mybatis数据源与连接池

    对于ORM框架而言,数据源的组织是一个非常重要的一部分,这直接影响到框架的性能问题.本文将通过对MyBatis框架的数据源结构进行详尽的分析,并且深入解析MyBatis的连接池.本文首先会讲述MyBa ...