class Pagination:
def __init__(self, page, page_total, per_one_page=15, max_page=11): '''
:param page: 当前页
:param page_total: 总页数
:param per_one_page: 没有显示的条数
:param page_max: 最大分页标签数
'''
# 获取当前页面
try:
page = int(page)
if page < 0:
page = 1
except Exception as e:
print(e)
page = 1
self.page = page
# 没有显示的内容条数
self.per_one_page = per_one_page
# 最大分页标签数
self.max_page = max_page
# 最大分页标签的一半
self.half_page = self.max_page // 2
page_total, more = divmod(page_total, per_one_page)
self.page_total = page_total
# 总页数
if more:
self.page_total += 1
# 当前分页标签起始和结束值
# 页面总数小于最大显示数
if page_total < self.max_page:
self.page_start = 1
self.page_end = self.page_total
else:
# 当前页面小于分页最大显示数量的一半,
if self.page - self.half_page < 0:
self.page_start = 1
self.page_end = self.max_page
# 当前页面大于总页面数量减去最大分页数量的一半
elif page + self.half_page > page_total:
self.page_end = page_total
self.page_start = page_total - max_page
else:
# 正常取值
self.page_start = page - self.half_page
self.page_end = page + self.half_page # 取对象开始索引
@property
def start(self):
return (self.page - 1) * self.per_one_page # 取对象结束索引
@property
def end(self):
return self.page * self.per_one_page # 获取分页标签
@property
def page_tag(self):
# 页面分页标签列表
pager_li = []
# 上一页标签按钮
if self.page > 1:
last_page = '<li><a href="?page={}"><span>«</span></a></li>'.format(self.page - 1)
else:
# 当前页是第一页
last_page = '<li class="disabled"><a ><span>«</span></a></li>'
pager_li.append(last_page)
# 循环生成分页标签
for i in range(self.page_start, self.page_end + 1):
if i == self.page:
pager_li.append('<li class="active"><a href="?page={}">{}</a></li>'.format(i, i))
else:
pager_li.append('<li><a href="?page={}">{}</a></li>'.format(i, i))
# 下一页标签按钮
if self.page + 1 < self.page_total:
next_page = '<li><a href="?page={}"> <span>»</span></a></li>'.format(self.page + 1)
else:
# 当前页是最后一页
next_page = '<li class="disabled"><a ><span>»</span></a></li>'
# 所有标签联合
pager_li.append(next_page)
pager = ' '.join(pager_li)
return pager

  

django中的分页标签的更多相关文章

  1. Django中的分页,cookies与session

    cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不 ...

  2. Django 中设置分页页码,只显示当前页以及左右两页

    设置后的效果如下: Django 给我们提供了分页的功能:`Paginator`和`Page`类都是用来做分页的.他们在Django中的路径为:`from django.core.paginator ...

  3. django中的分页管理

    有时,展示的对象太多,需要对他们进行分页展示,不能一页把所有的结果都展示出来吧,那样的话,哈哈,挺逗 使用Django分页器功能 从Django中导入Paginator模块(没有的话,自行下载,我是w ...

  4. 在django中使用自定义标签实现分页功能

    效果演示: github地址:https://github.com/mncu/django_projects/tree/master/django_projects/pagination_test 本 ...

  5. Django中的分页操作、form校验工具

    批量插入数据 后端: def fenye(request): book_list=[] for i in range(100): book_list.append(models.Book(title= ...

  6. Django中的分页

    直接看代码吧,还算比较简单: 先确认数据量有多少 根据页面显示数据的多少来分割数据,得到页面的开始数据和结束数据 根据开始和截止数据去切片数据,并且得到总共的页码数 根据一页显示多少页码和当前页码数, ...

  7. django中的分页设置

    1.在控制台中的展示 from django.core.paginator import Paginator iter = 'abcdefghijklmn' inator = Paginator(it ...

  8. django中写分页

    1.引用函数import from django.core.paginator import Paginator 2.分页 page_obj = Paginator(Article.objects.a ...

  9. Django 中 a href标签 使用方法 跳转页面(Django四)

    上次我已经用Django启动了一个登录模板页面 具体过程见:Django启动我的第一个模板页面 但问题是我们只能通过监听的端口访问这一个页面,不能通过页面的一些连接跳转到其他页面如下,我们不能点击注册 ...

随机推荐

  1. sprintboot 中占位符及多环境配置

    (原) 关于springboot中多环境配置问题 1.在application.properties文件中通过 spring.profiles.active=... 选择系统所要加载的配置文件,这里的 ...

  2. Android 获取验证码倒计时实现

    Android 获取验证码倒计时实现 2017年10月24日 09:55:41 FBY展菲 阅读数:2002    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.cs ...

  3. 记一次CPU飙升BUG

    图文地址:https://mp.weixin.qq.com/s?__biz=Mzg3NjEzODQ4NQ==&mid=2247483690&idx=1&sn=7c926f400 ...

  4. JS 设计模式七 -- 模板方法模式

    概念 模板方法模式是一直昂只需使用继承就可以实现的非常简单的模式. 模板方法模式由两部分结构组成,第一部分是抽象父类,第二部分是具体实现的子类. 实现 模板方法模式一般的实现方式为继承. // 体育运 ...

  5. CodeBlocks卸载后重装 编译c文件提示错误信息“No such file or directory”

    编译最简单的helloworld程序,提示第一行#include<stdio.h> 找不到头文件. 解决方法: 再次卸载CodeBlocks后,将之前的配置文件删除. 路径:C:\User ...

  6. telnet-server、telnet

    1.查询yum仓库中的安装包 [root@localhost /]# yum list |grep telnettelnet.x86_64                              1 ...

  7. 全面系统讲解CSS 工作应用+面试一步搞定

  8. AI佳作解读系列(四)——数据增强篇

    前言 在深度学习的应用过程中,数据的重要性不言而喻.继上篇介绍了数据合成(个人认为其在某种程度上可被看成一种数据增强方法)这个主题后,本篇聚焦于数据增强来介绍几篇杰作! (1)NanoNets : H ...

  9. 特殊计数序列——第二类斯特林(stirling)数

    计算式 \[ S(n,m)=S(n-1,m-1)+mS(n,m) \] \(S(0,0)=1,S(i,0)=0(i>0)\) 组合意义 将\(n\)个不可分辨的小球放入\(m\)个不可分辨的盒子 ...

  10. atlassian-jira部署文档

    部署mysql数据库,我这里使用mariadb数据库,并且创建jira的数据库和用户,下面是创建jira数据库和用户的操作,安装数据库mysq过程略.(MYSQL数据库也是可以的,不过mysql的驱动 ...