django中的分页标签
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中的分页标签的更多相关文章
- Django中的分页,cookies与session
cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不 ...
- Django 中设置分页页码,只显示当前页以及左右两页
设置后的效果如下: Django 给我们提供了分页的功能:`Paginator`和`Page`类都是用来做分页的.他们在Django中的路径为:`from django.core.paginator ...
- django中的分页管理
有时,展示的对象太多,需要对他们进行分页展示,不能一页把所有的结果都展示出来吧,那样的话,哈哈,挺逗 使用Django分页器功能 从Django中导入Paginator模块(没有的话,自行下载,我是w ...
- 在django中使用自定义标签实现分页功能
效果演示: github地址:https://github.com/mncu/django_projects/tree/master/django_projects/pagination_test 本 ...
- Django中的分页操作、form校验工具
批量插入数据 后端: def fenye(request): book_list=[] for i in range(100): book_list.append(models.Book(title= ...
- Django中的分页
直接看代码吧,还算比较简单: 先确认数据量有多少 根据页面显示数据的多少来分割数据,得到页面的开始数据和结束数据 根据开始和截止数据去切片数据,并且得到总共的页码数 根据一页显示多少页码和当前页码数, ...
- django中的分页设置
1.在控制台中的展示 from django.core.paginator import Paginator iter = 'abcdefghijklmn' inator = Paginator(it ...
- django中写分页
1.引用函数import from django.core.paginator import Paginator 2.分页 page_obj = Paginator(Article.objects.a ...
- Django 中 a href标签 使用方法 跳转页面(Django四)
上次我已经用Django启动了一个登录模板页面 具体过程见:Django启动我的第一个模板页面 但问题是我们只能通过监听的端口访问这一个页面,不能通过页面的一些连接跳转到其他页面如下,我们不能点击注册 ...
随机推荐
- flask 项目基本框架的搭建
综合案例:学生成绩管理项目搭建 一 新建项目目录students,并创建虚拟环境 mkvirtualenv students 二 安装开发中使用的依赖模块 pip install flask==0.1 ...
- Storm入门(五)Twitter Storm如何保证消息不丢失
转自:http://xumingming.sinaapp.com/127/twitter-storm如何保证消息不丢失/ storm保证从spout发出的每个tuple都会被完全处理.这篇文章介绍st ...
- zabbix-agent(zabbix-proxy)配置
PidFile=/var/run/zabbix/zabbix_agentd.pidLogFile=/var/log/zabbix/zabbix_agentd.logLogFileSize=30Serv ...
- 随心测试_软测基础_001<说在开始_测试理念>
- iview render Datepicker 起止时间限制
{ title: '开始时间', key: 'planDateFrom', minWidth: 120, sortable: true, align: 'center', render: (h, pa ...
- Net包管理NuGet(4)打包nuget包的进阶用法
nuget包不止可以放进dll,还可以引用其他包,创建项目文件及替换配置文件 引用的时候同时引用依赖项假设引用某个dll需要依赖其他的dll如Zeta.Core.dll需要引用ZETA.Seriali ...
- C#中字符串转日期类型
1,yyyyMMdd DateTime date = DateTime.ParseExact(", "yyyyMMdd", System.Globalization.Cu ...
- Vue.js 2.x笔记:路由Vue Router(6)
1. Vue Router简介与安装 1.1 Vue Router简介 Vue Router 是 Vue.js 官方的路由管理器.它和 Vue.js 的核心深度集成,构建单页面应用. Vue Rout ...
- Ubuntu 16.04 RabbitMq 安装与运行(安装篇)
Ubuntu 16.04 RabbitMq 安装与运行(安装篇) 2018年08月15日 15:05:24 我跟吴彦祖四六开 阅读数:1966 前言 目前公司用阿里云 + redis 的方式实现的 ...
- 微信小程序工具类
wechat-common-sdk ? 场景:目前工作中的项目需要包含并使用另一个项目. 也许是第三方库,或者你独立开发的,用于多个父项目的库. 现在问题来了:你想要把它们当做两个独立的项目,同时又想 ...