分页方法需要参数(当前页数,总数据量,拿到query的值)
class Pagination:
def __init__(self, page_num, all_count ,params=None,per_num=10,max_show=11):
"""
:param page_num: 当前的页码数
:param all_count: 总数据量
:param per_num: 每页显示的数据条数
:param max_show: 最大显示页码数
:param self.total_page_num: 总页码数
:param self.page_start: 起始页码数
:param self.page_end: 终止页码数
"""
try:
page_num = int(page_num)
if page_num <=0:
page_num = 1
except Exception as e:
page_num = 1
self.parmas = params if params else QueryDict(mutable=True)
self.page_num = page_num
self.all_count = all_count
self.per_num = per_num
total_page_num, more = divmod(all_count,per_num)
if more:
total_page_num+=1
half_show = max_show//2
# 总页码数不足以满足最大页码数
if total_page_num < max_show:
page_start = 1
page_end = total_page_num
else:
if page_num-half_show<=0:
page_start =1
page_end = max_show
elif page_num+half_show>total_page_num:
page_start = total_page_num-max_show+1
page_end = total_page_num
else:
page_start = page_num - half_show
page_end = page_num + half_show
self.page_start=page_start
self.page_end=page_end
self.total_page_num = total_page_num
print(self.parmas.urlencode())
@property
def page_html(self):
page_list = []
if self.page_num == 1:
page_list.append('<li class="disabled"><a ><span>«</span></a></li>')
else:
self.parmas['page'] = self.page_num - 1
print(self.parmas.urlencode())
page_list.append('<li><a href="?{}" ><span>«</span></a></li>'.format(self.parmas.urlencode()))
for i in range(self.page_start,self.page_end + 1):
self.parmas['page'] = i
if i == self.page_num:
page_list.append('<li class="active"><a href="?{}">{}</a></li>'.format(self.parmas.urlencode(), i))
else:
page_list.append('<li><a href="?{}">{}</a></li>'.format(self.parmas.urlencode(), i))
if self.page_num == self.total_page_num:
page_list.append('<li class="disabled"><a><span>»</span></a></li>')
else:
self.parmas['page'] = self.page_num + 1
page_list.append('<li><a href="?{}" ><span>»</span></a></li>'.format(self.parmas.urlencode()))
return ''.join(page_list)
@property
def start(self):
return (self.page_num - 1)* self.per_num
@property
def end(self):
return self.page_num * self.per_num
分页方法需要参数(当前页数,总数据量,拿到query的值)的更多相关文章
- SQL查看数据库中每张表的数据量和总数据量
查看所有表对应的数据量 SELECT a.name AS 表名, MAX(b.rows) AS 记录条数 FROM sys.sysobjects AS a INNER JOIN sys.sysinde ...
- SqlServer快速获得表总记录数(大数据量)
--第1种 执行全表扫描才能获得行数 SELECT count(*) FROM BUS_tb_UserGradePrice --第2种 执行扫描全表id不为空的,获得行数 select count(u ...
- mysql大数据量分页查询优化
参考文章:https://www.dexcoder.com/selfly/article/293 Mysql的分页查询十分简单,但是当数据量大的时候一般的分页就吃不消了. 传统分页查询:SELECT ...
- 【Easyexcel】java导入导出超大数据量的xlsx文件 解决方法
解决方法: 使用easyexcel解决超大数据量的导入导出xlsx文件 easyexcel最大支持行数 1048576. 官网地址: https://alibaba-easyexcel.github. ...
- ORACLE和SQL查询库数据量
ORACLE根据账号查询每张表数据量: select t.table_name,t.num_rows from user_tables t ORDER BY NUM_ROWS DESC; SQL SE ...
- 数据分页 THINKPHP3.2 分页 三种分页方法
数据分页 复制本页链接 opensns 通常在数据查询后都会对数据集进行分页操作,ThinkPHP也提供了分页类来对数据分页提供支持. 下面是数据分页的两种示例. 第一种:利用Page类和limit方 ...
- asp.net数据分页方法
/// <summary> /// 数据分页方法 /// </summary> /// <param name="PageIndex">当前页& ...
- Asp.Net 中Grid详解两种方法使用LigerUI加载数据库数据填充数据分页
1.关于LigerUI: LigerUI 是基于jQuery 的UI框架,其核心设计目标是快速开发.使用简单.功能强大.轻量级.易扩展.简单而又强大,致力于快速打造Web前端界面解决方案,可以应用于. ...
- SQL Server游标 C# DataTable.Select() 筛选数据 什么是SQL游标? SQL Server数据类型转换方法 LinQ是什么? SQL Server 分页方法汇总
SQL Server游标 转载自:http://www.cnblogs.com/knowledgesea/p/3699851.html. 什么是游标 结果集,结果集就是select查询之后返回的所 ...
随机推荐
- 【LeetCode】394. Decode String 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 栈 日期 题目地址:https://leetcode ...
- 1046:Square Number
总时间限制: 1000ms 内存限制: 65536kB 描述 给定正整数b,求最大的整数a,满足a*(a+b) 为完全平方数 输入 多组数据,第一行T,表示数据数.对于每组数据,一行一个正整数表示b. ...
- Docker 与 K8S学习笔记(七)—— 容器的网络
本节我们来看看Docker网络,我们这里主要讨论单机docker上的网络.当docker安装后,会自动在服务器中创建三种网络:none.host和bridge,接下来我们分别了解下这三种网络: $ s ...
- 小白自制Linux开发板(第二季 V3s篇) 一. 换个核心再来一次
1.前言 大家心心念念(个人认为)的小白自制开发板全新系列正式来了,之前我们使用全志的F1C200s芯片制作了一个小电脑,众所周知,调试很艰难,坑也很多,以至于墨云到现在还是没找到对应的补救方案,为了 ...
- HTMl+CSS 模仿京东网登录页面
课后实践项目,仅页面效果,写博客纯属记录! 码云开源仓库地址:https://gitee.com/ynavc/jd 演示地址:https://ynavc.gitee.io/jd 效果图: 实现代码: ...
- 编写Java程序,中国道教中掌管天宫的最高权力统治者是玉帝(Emperor),我们可以认为玉帝是一个单例模式,在这个场景中,有玉帝和天宫的大臣(Minister)们,大臣每天要上朝参见玉帝,而每一天参
查看本章节 查看作业目录 需求说明: 中国道教中掌管天宫的最高权力统治者是玉帝(Emperor),我们可以认为玉帝是一个单例模式,在这个场景中,有玉帝和天宫的大臣(Minister)们,大臣每天要上朝 ...
- Java_Swing中关于关闭窗口的方法
注意:在继承Jframe的过程中,由于工具的快捷功能可以会继承到Frame类,继承到Jframe类打开的窗口默认是可以关闭的,而Frame类打开的窗口点了关闭的没有反应的. 1.关闭子窗口后,父窗口也 ...
- Notepad++插件Base64编解码
我们平常进行Base64编码需要自己写代码转换, 或者使用其他人编写的小工具程序, 也可以使用在线base64编码工具, 现在我们还可以使用Notepad++自带的插件, 进行Base64编码和解码, ...
- Swoole 协程使用示例及协程优先级
示例一: Co::set(['hook_flags'=> SWOOLE_HOOK_ALL]); Co\run(function () { go(function() { var_dump(fil ...
- docker查看容器的ip地址
查看Docker的底层信息. docker inspect 会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息 # 列出所有容器的IP地址docker inspect --forma ...