python web框架中实现原生分页


Posted in Python onSeptember 08, 2019

本文实例为大家分享了python web框架实现原生分页的具体代码,供大家参考,具体内容如下

原生分页器 示例   

#!/usr/bin/env python
# -*- coding:utf-8 -*-
 
 
class Pagination:
 
 def __init__(self, p, all_count, pre=10, max_show=11):
 '''
 :param p: 当前页码
 :param all_count: 数据总条数
 :param pre: 每页数据量
 :param max_show: 最多页码数
 '''
 try:
 self.p = int(p) # 传进来的页码
 if self.p <= 0:
 self.p = 1
 except Exception as e:
 self.p = 1
 
 # 总量
 # all_count = all_count
 # pre = per # 每页数据条数
 total_num, more = divmod(all_count, pre)
 if more:
 total_num += 1 # total_num总数据页数
 
 # 显示页码数
 max_show = max_show
 if total_num <= max_show: # 总数据量很小
 page_start = 1
 page_end = total_num
 else:
 if self.p - max_show // 2 <= 0: # 防止左边出现0页
 page_start = 1
 page_end = max_show
 
 elif self.p + max_show // 2 >= total_num + 1: # 防止右边出现超出
 page_end = total_num
 page_start = page_end - max_show
 else:
 page_start = self.p - max_show // 2
 page_end = self.p + max_show // 2
 
 # 数据的起始结束
 self.start = (self.p - 1) * pre
 self.end = self.p * pre
 
 # 页码
 self.page_start = page_start
 self.page_end = page_end
 self.total_num = total_num
 
 @property
 def page_html(self):
 li_list = []
 for i in range(self.page_start, self.page_end + 1):
 if i == self.p:
 li_list.append('<li class="active"><a href="?p={}" >{}</a></li>'.format(i, i))
 else:
 li_list.append('<li><a href="?p={}" >{}</a></li>'.format(i, i))
 
 # 添加页首 页尾
 
 li_list.insert(0,
  '<li><a href="?p={}" aria-label="Previous"><span aria-hidden="true">«</span></a></li>'.format(
  self.p - 1))
 li_list.append(
 '<li><a href="?p={}" aria-label="Next"><span aria-hidden="true">»</span> </a></li>'.format(self.p + 1))
 
 if self.p == 1:
 li_list[0] = '<li class="disabled"><span aria-hidden="true">«</span></li>'
 elif self.p == self.total_num:
 li_list[-1] = '<li class="disabled"><span aria-hidden="true">»</span></li>'
 
 pagehtml = ''.join(li_list)
 return pagehtml

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 除法小技巧
Sep 06 Python
Python语言描述随机梯度下降法
Jan 04 Python
基于python内置函数与匿名函数详解
Jan 09 Python
Python列表推导式与生成器表达式用法示例
Feb 08 Python
Linux-ubuntu16.04 Python3.5配置OpenCV3.2的方法
Apr 02 Python
解决python2 绘图title,xlabel,ylabel出现中文乱码的问题
Jan 29 Python
Python视频编辑库MoviePy的使用
Apr 01 Python
Jupyter notebook设置背景主题,字体大小及自动补全代码的操作
Apr 13 Python
在 Python 中使用 MQTT的方法
Aug 18 Python
使用python-cv2实现视频的分解与合成的示例代码
Oct 26 Python
Python - 10行代码集2000张美女图
May 23 Python
pytorch 使用半精度模型部署的操作
May 24 Python
python中open函数的基本用法示例
Sep 07 #Python
Python3显示当前时间、计算时间差及时间加减法示例代码
Sep 07 #Python
利用python计算时间差(返回天数)
Sep 07 #Python
Django配置MySQL数据库的完整步骤
Sep 07 #Python
Django项目创建到启动详解(最全最详细)
Sep 07 #Python
Python笔试面试题小结
Sep 07 #Python
使用Python代码实现Linux中的ls遍历目录命令的实例代码
Sep 07 #Python
You might like
Yii实现简单分页的方法
2016/04/29 PHP
jQuery+php简单实现全选删除的方法
2016/11/28 PHP
PHP延迟静态绑定的深入讲解
2018/04/02 PHP
javascript 一段左右两边随屏滚动的代码
2009/06/18 Javascript
关于JS数组追加数组采用push.apply的问题
2014/06/09 Javascript
JavaScript获取当前url根目录(路径)
2016/06/17 Javascript
原生JS封装ajax 传json,str,excel文件上传提交表单(推荐)
2016/06/21 Javascript
谈谈因Vue.js引发关于getter和setter的思考
2016/12/02 Javascript
微信小程序页面开发注意事项整理
2017/05/18 Javascript
详解VueRouter进阶之导航钩子和路由元信息
2017/09/13 Javascript
vue实现图书管理demo详解
2017/10/17 Javascript
JavaScript数组基于交换的排序示例【冒泡排序】
2018/07/21 Javascript
VUE DOM加载后执行自定义事件的方法
2018/09/07 Javascript
微信{"errcode":48001,"errmsg":"api unauthorized, hints: [ req_id: 1QoCla0699ns81 ]"}
2018/10/12 Javascript
JS开发 富文本编辑器TinyMCE详解
2019/07/19 Javascript
vue keep-alive实现多组件嵌套中个别组件存活不销毁的操作
2020/10/30 Javascript
[49:54]Ti4 循环赛第三日 LGD vs Titan
2014/07/12 DOTA
[02:29]完美世界高校联赛上海赛区回顾
2015/12/15 DOTA
Python中让MySQL查询结果返回字典类型的方法
2014/08/22 Python
Python语言描述连续子数组的最大和
2018/01/04 Python
Python数据处理numpy.median的实例讲解
2018/04/02 Python
对python的输出和输出格式详解
2018/12/08 Python
Python3模拟curl发送post请求操作示例
2019/05/03 Python
python用for循环求和的方法总结
2019/07/08 Python
python isinstance函数用法详解
2020/02/13 Python
html5 Canvas画图教程(3)—canvas出现1像素线条模糊不清的原因
2013/01/09 HTML / CSS
印度尼西亚值得信赖的第一家网店:Bhinneka
2018/07/16 全球购物
播音主持女孩的自我评价分享
2013/11/20 职场文书
安全检查管理制度
2014/02/02 职场文书
本科毕业生自荐信
2014/06/02 职场文书
2015新教师教学工作总结
2015/07/22 职场文书
家电创业计划书
2019/08/05 职场文书
某某店铺的开业庆典主持词范本
2019/11/25 职场文书
goland 恢复已更改文件的操作
2021/04/28 Golang
虚拟机linux端mysql数据库无法远程访问的解决办法
2021/05/26 MySQL
vue elementUI批量上传文件
2022/04/26 Vue.js