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. utils02_使用github创建一个远程仓库

    1.注册github账号 https://github.com/ 2.第一次登陆需要创建一个仓库 3.在本地生成密钥和公钥 ssh-keygen -t rsa 会在当前用户下生成2个文件就是公钥和密钥 ...

  2. ROCR包中ROC曲线计算是取大于cutoff还是大于等于cutoff

    找到对应的代码如下 .compute.unnormalized.roc.curve function (predictions, labels) { pos.label <- levels(la ...

  3. 原生JS实现简易计算器

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  4. docker tomcat启动慢

    镜像 https://hub.docker.com/r/errorlife/tomcat/ docker pull errorlife/tomcat

  5. 解决CSocket高数据传输问题

    这个是自己项目中发现的问题,所以这个不一定适用于你的. 仅供参考. 头文件: ESSocket.h // ESSocket.h : header file // #ifndef ESSOCKET_H ...

  6. Javascript-简单的计时钟表

    <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...

  7. CesiumLab V1.4 新功能 BIM数据处理

    我也没想到,BIM数据处理一下拖了这么久才有个交代.我们照例先放图   Revit官方的示例数据   隐藏屋顶+俯视   曾经因为太大而无法导出无法处理的医院模型   室内装修方案模型 最近和很多做b ...

  8. 索尼微单cmos坏点屏蔽

    偶然发现相机有坏点了,果断去售后换了一台回来.然后试机,吐血 要不是我旧机器满是岁月的痕迹,我真以为原封给我退回来了 这样不行啊,难道再换一个回来?毕竟是脸皮薄的人.不好意思操作啊. 于是上网找找,果 ...

  9. SpringCloud微服务实战二:Spring Cloud Ribbon 负载均衡 + Spring Cloud Feign 声明式调用

    1.Spring Cloud Ribbon的作用 Ribbon是Netflix开发的一个负载均衡组件,它在服务体系中起着重要作用,Pivotal将其整合成为Spring Cloud Ribbon,与其 ...

  10. Django 的学习(2) 从adminuser到配置

    创建一个superuser python manage.py createsuperuser 然后是密码邮箱用户名 You should see a few types of editable con ...