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. 剑指offer:调整数组顺序使奇数位于偶数前面

    题目 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分. 分析 事实上,这个题比较简单,很多种方式都可以实现,但是其时间复杂度或空间复 ...

  2. 《重构》的读书笔记–方法列表

    第5章 重构列表 5.1 重构的记录格式103 5.2 寻找引用点105 5.3 这些重构手法有多成熟106 第6章 重新组织函数 6.1 (P110)Extract Method(提炼函数) 6.2 ...

  3. SQL 查询中case的运用

    适用场景: 需要根据现有字段经过一定条件得到新的查询字段相关语法: CASE WHEN 条件1 TEHN 结果1 WHEN 条件2 THEN 结果2 ...... ELSE 结果N END 练习代码: ...

  4. 015_python原生在线调试工具

    一.pdb https://docs.python.org/3/library/pdb.html

  5. gdb cheat sheet

    0x01 控制流 r run,运行程序. r < a.txt   run,重定向输入 si   step instruction 进入函数 ni      next instruction 下一 ...

  6. video标签,在移动端获取第一帧作为展示

    写在前面 video标签,获取第一帧作为poster.网上能找着很多案例,很容易实现,在pc端 效果明显.但是在移动端,这些实现方式并不能起作用.原因是 移动端 对video标签的限制,许多video ...

  7. opencv : imread()的应用

    概述: imread()是opencv中用于读取图片的一个工具.怎么读取图片看似一个很简单的工作,但实际上也有一些细节需要我们注意,以避免在后续的操作中出现bug. 函数原型: 函数原型: Mat i ...

  8. Mysql中的explain和desc

    查询分析器 desc 和 explain 作用基本一样,explain速度快一点 explain 一条SQL语句出出现以下参数, 其中id,select_type,table 用于定位查询,表示本行参 ...

  9. git和github的学习

    摘要:Git是个实用而流行的工具,我在网上找了很多教程,发现很多扯来扯去的,难消化,难吸收,而廖雪峰老师的这个教程最好,由浅入深,一步一步跟着做,记录巩固下.原作网址:https://www.liao ...

  10. idea 转载

    转载:https://blog.csdn.net/qq_34033853/article/details/77448431 摘要:在创建类时,自动生成代码的注释模板 本篇内容为大家提供的是Intell ...