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. vue.js_11_路由的2中参数传递和路由的嵌套

    1.以?的形式传递参数   <router-link to="/login?id=10&name=zs">登录</router-link> 发送参数 ...

  2. leyou_05_文件上传

    1.搭建一个新的微服务Ly-upload用来上传文件 2.导入文件上传到额依赖 <dependencies> <dependency> <groupId>org.s ...

  3. iType.js仿输入文字效果

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. autoreleasing的用法介绍:

    在c/c++,objective-c内存管理中有一条是:谁分配谁释放. __autoreleasing则可以使对像延迟释放.比如你想传一个未初始化地对像引用到一个方法当中,在此方法中实始化此对像,那么 ...

  5. 软件-MQ-MQ:IBM MQ

    ylbtech-软件-MQ-MQ:MQ(IBM MQ) MQ传递主干,在世界屡获殊荣. 它帮您搭建企业服务总线(ESB)的基础传输层.IBM WebSphere MQ为SOA提供可靠的消息传递.它为经 ...

  6. MyBatis-Spring(三)--Mapped Statements collection does not contain value for...问题解决

    前一篇文章我总结了一下MyBatis-Spring项目使用SqlSessionTemplate配置的用法,其实在测试过程中并不是一帆风顺,遇到了很多的问题,最主要的就是Mapped Statement ...

  7. jmeter参数化之用户自定义变量

    1.     用badboby进行录制,录制完成后保存,用JMeter格式进行保存,如:登陆.jmx 2.     在jmeter中打开保存的文件登陆.jmx. 3.线程组右击-添加-配置元件-用户定 ...

  8. KOA 学习(五)koa常用库koa-swig

    koa-swig 引入库app.js var render = require('koa-swig'); 模版设置app.js app.context.render = co.wrap(render( ...

  9. PHP CURL header 设置HOST主机头进行访问并 POST提交數據

    $host = array("Host: act.qzone.qq.com");// 域名不帶http://$data = array(            'aa' => ...

  10. vue/npm 错误提示&解决

    1,下图的报错为没有系统权限 解决: P.S. 用管理打开后的命令行默认是window/system32,从system32退回到桌面的路径如下图 2, vuex 报错 “unknown mutati ...