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. spring cloud深入学习(十一)-----服务网关zuul

    前面的文章我们介绍了,Eureka用于服务的注册于发现,Feign支持服务的调用以及均衡负载,Hystrix处理服务的熔断防止故障扩散,Spring Cloud Config服务集群配置中心,似乎一个 ...

  2. IO流 复制文件及文件夹

    package io; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; im ...

  3. KOA 学习(四)

    响应(Response) Koa Response 对象是对 node 的 response 进一步抽象和封装,提供了日常 HTTP 服务器开发中一些有用的功能. response.header Re ...

  4. 使用alibaba的json工具将String类型转为JSONArray类型

    转化流程:先将输入流转为String类型,再使用alibaba的json转换工具,将字符串转化为json数组 SensorDevices sensorDevices = new SensorDevic ...

  5. jmeter断言步骤

    在POST /wordpress/wp-login.php请求,也就是名称为submit login form user的请求上点右键, 选择添加 -> 后置处理器 -> CSS/JQue ...

  6. Effective Modern C++ 条款4:掌握查看型别推导结果的方法

    采用何种工具来查看型别推导结果,取决于你在软件开发过程的哪个阶段需要该信息.主要研究三个可能的阶段:撰写代码阶段.编译阶段.运行时阶段. IDE编译器 IDE中的代码编译器通常会在你将鼠标指针选停止某 ...

  7. TZ_02MyBatis_lazy SqlMapConfig.xml

    Mybatis的延迟加载又称为懒加载 mybatis在一对多的查询中,例如查询一个用户时需要查询这个用户下的所有账户信息,如果一次性的select * from user u left join ac ...

  8. Http中GET和POST请求的区别

    https://mp.weixin.qq.com/s/_oLnkDQn3TE7XdFWCT5Img GET请求 GET /books/?sex=man&name=Professional HT ...

  9. JavaScript 面试:什么是纯函数?

    原文:Eric Elliott  译文:众成翻译 www.zcfy.cc/article/master-the-javascript-interview-what-is-a-pure-function ...

  10. go语言:获取字符串长度

    go语言字符串底层由字节数组实现,使用UTF-8编码,初始化以后不能被修改 获取字符串长度 一.当字符串中所有字符都是单字节字符时,使用 len 函数获取字符串的长度 package main imp ...