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>&laquo;</span></a></li>')
else:
self.parmas['page'] = self.page_num - 1
print(self.parmas.urlencode())
page_list.append('<li><a href="?{}" ><span>&laquo;</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>&raquo;</span></a></li>')
else:
self.parmas['page'] = self.page_num + 1
page_list.append('<li><a href="?{}" ><span>&raquo;</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的值)的更多相关文章

  1. SQL查看数据库中每张表的数据量和总数据量

    查看所有表对应的数据量 SELECT a.name AS 表名, MAX(b.rows) AS 记录条数 FROM sys.sysobjects AS a INNER JOIN sys.sysinde ...

  2. SqlServer快速获得表总记录数(大数据量)

    --第1种 执行全表扫描才能获得行数 SELECT count(*) FROM BUS_tb_UserGradePrice --第2种 执行扫描全表id不为空的,获得行数 select count(u ...

  3. mysql大数据量分页查询优化

    参考文章:https://www.dexcoder.com/selfly/article/293 Mysql的分页查询十分简单,但是当数据量大的时候一般的分页就吃不消了. 传统分页查询:SELECT ...

  4. 【Easyexcel】java导入导出超大数据量的xlsx文件 解决方法

    解决方法: 使用easyexcel解决超大数据量的导入导出xlsx文件 easyexcel最大支持行数 1048576. 官网地址: https://alibaba-easyexcel.github. ...

  5. ORACLE和SQL查询库数据量

    ORACLE根据账号查询每张表数据量: select t.table_name,t.num_rows from user_tables t ORDER BY NUM_ROWS DESC; SQL SE ...

  6. 数据分页 THINKPHP3.2 分页 三种分页方法

    数据分页 复制本页链接 opensns 通常在数据查询后都会对数据集进行分页操作,ThinkPHP也提供了分页类来对数据分页提供支持. 下面是数据分页的两种示例. 第一种:利用Page类和limit方 ...

  7. asp.net数据分页方法

    /// <summary> /// 数据分页方法 /// </summary> /// <param name="PageIndex">当前页& ...

  8. Asp.Net 中Grid详解两种方法使用LigerUI加载数据库数据填充数据分页

    1.关于LigerUI: LigerUI 是基于jQuery 的UI框架,其核心设计目标是快速开发.使用简单.功能强大.轻量级.易扩展.简单而又强大,致力于快速打造Web前端界面解决方案,可以应用于. ...

  9. SQL Server游标 C# DataTable.Select() 筛选数据 什么是SQL游标? SQL Server数据类型转换方法 LinQ是什么? SQL Server 分页方法汇总

    SQL Server游标   转载自:http://www.cnblogs.com/knowledgesea/p/3699851.html. 什么是游标 结果集,结果集就是select查询之后返回的所 ...

随机推荐

  1. 【LeetCode】222. Count Complete Tree Nodes 解题报告(Python)

    [LeetCode]222. Count Complete Tree Nodes 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个 ...

  2. 「算法笔记」快速数论变换(NTT)

    一.简介 前置知识:多项式乘法与 FFT. FFT 涉及大量 double 类型数据操作和 \(\sin,\cos\) 运算,会产生误差.快速数论变换(Number Theoretic Transfo ...

  3. Chapter 8 Selection Bias

    目录 8.1 The structure of selection bias 8.2 Examples of selection bias 8.3 Selection bias and confoun ...

  4. kotlin+springboot+mybatis-puls+mysql搭建gradle-web工程

    kotlin+springboot+mybatis-puls+mysql搭建web工程 ​ 前段时间研究了spring security及OAuth2系列之后,本来打算研究spring的,但是部门发生 ...

  5. CS学习资料百度云链接

    CS学习资料百度云链接 [0]Springboot微服务开发天气预报系统视频教程https://pan.baidu.com/s/1joz7flyztCq8oklBlsz8dQ提取密码:cpz7 [1] ...

  6. CS5210完全替代AG6202|HDMI转VGA芯片+原理图|替代兼容AG6202

    安格AG6202是一个HDMI转VGA不带音频解决方案,用于实现HDMI1.4高分辨率视频转VGA转换器.Capstone  CS5210不管在性能上和设计参数上面都是可以完全替代安格AG6202,且 ...

  7. Linux_Cornd任务调度

    Crond任务调度 进行定时任务的设置 概述 任务调度:是指系统在某个时间执行特定的命令或程序 作用:避免重复工作 基本语法 crontab [选项] 选项 功能 -e 编辑crontab定时任务 - ...

  8. Java Web程序设计笔记 • 【第9章 EL表达式】

    全部章节   >>>> 本章目录 9.1 EL 表达式基础 9.1.1 EL 表达式简介 9.1.2 EL 表达式的定义 9.1.3 使用 EL 访问变量 9.1.4 使用 E ...

  9. Java初学者作业——使用switch结构实现一个简单的购物计划

    返回本章节 返回作业目录 需求说明: 使用switch结构实现一个购物计划,计划为:星期一.星期三.星期五购买伊利牛奶和面包,星期二.星期四购买苹果和香蕉,星期六.星期日购买啤酒和周黑鸭. 实现思路: ...

  10. vue3+TypeScript+vue-router使用

    简单使用 创建项目 vue-cli创建 $npm install -g @vue/cli $vue --version @vue/cli 4.5.15 $vue create my-project 然 ...