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启动我的第一个模板页面 但问题是我们只能通过监听的端口访问这一个页面,不能通过页面的一些连接跳转到其他页面如下,我们不能点击注册 ...
随机推荐
- 解决在使用gensim.models.word2vec.LineSentence加载语料库时报错 UnicodeDecodeError: 'utf-8' codec can't decode byte......的问题
在window下使用gemsim.models.word2vec.LineSentence加载中文维基百科语料库(已分词)时报如下错误: UnicodeDecodeError: 'utf-8' cod ...
- Elastic Stack-Kibana使用介绍(七)
一.前言 主要来讲述一下Kibana使用以及上生产时候的一些配置,要是大家对这块比较感兴趣我到时候也可以在结合Grafana做一些图表方面的介绍,后面等介绍完Beats以后我去阿里云租几台机器 ...
- 利用ELK分析Nginx日志生产实战(高清多图)
本文以api.mingongge.com.cn域名为测试对象进行统计,日志为crm.mingongge.com.cn和risk.mingongge.com.cn请求之和(此二者域名不具生产换环境统计意 ...
- Jdbc、Mybatis、Hibernate各自优缺点及区别
文章出处:Jdbc,Mybatis,Hibernate各自优缺点及区别 先比较下jdbc编程和hibernate编程各自的优缺点. 1.JDBC 我们平时使用jdbc进行编程,大致需要下面几个步骤: ...
- 关联分析中寻找频繁项集的FP-growth方法
关联分析是数据挖掘中常用的分析方法.一个常见的需求比如说寻找出经常一起出现的项目集合. 引入一个定义,项集的支持度(support),是指所有包含这个项集的集合在所有数据集中出现的比例. 规定一个最小 ...
- POJ2385——Apple Catching
$Apple~Catching$ Time Limit: 1000MS Memory Limit: 6553 ...
- 从JS的深拷贝与浅拷贝到jq的$.extend()方法
一.堆内存与栈内存 堆和栈都是内存中划分出来的用来存储的区域,栈为自动分配的内存空间,它由系统自动释放,堆为动态分配的内存,大小不定也不会自动释放. 二.js基本数据类型与引用类型的不同 基本数据类型 ...
- 注解 springbootapplication 自动扫描所在包及其子包。会将有注解的加入到spring容器中
注解 springbootapplication 自动扫描所在包及其子包.会将有注解的加入到spring容器中
- BZOJ2655calc
题目描述 一个序列a1,...,an是合法的,当且仅当:长度为给定的n.a1,...,an都是[1,A]中的整数.a1,...,an互不相等.一个序列的值定义为它里面所有数的乘积,即a1a2...an ...
- Spring Boot整合Elasticsearch
Spring Boot整合Elasticsearch Elasticsearch是一个全文搜索引擎,专门用于处理大型数据集.根据描述,自然而然使用它来存储和搜索应用程序日志.与Logstash和K ...