python通用分页功能
实现:
- class Page:
- def __init__(self,current_page,data_count,per_page_count=10,pager_num=10):
- self.current_page = current_page
- self.data_count = data_count
- self.per_page_count = per_page_count
- self.pager_num = pager_num
- @property
- def start(self):
- return (self.current_page-1) * self.per_page_count
- @property
- def end(self):
- return self.current_page * self.per_page_count
- @property
- def total_count(self):
- total_num,remainder = divmod(self.data_count,self.per_page_count)
- if remainder:
- total_num += 1
- return total_num
- def page_str(self,base_url):
- page_list = []
- max = int((self.pager_num+1)/2)
- min = int((self.pager_num-1)/2)
- if self.total_count < self.pager_num:
- start_index = 1
- end_index = self.total_count + 1
- else:
- if self.current_page <= max:
- start_index = 1
- end_index = self.pager_num + 1
- else:
- start_index = self.current_page - min
- end_index = self.current_page + max
- if self.current_page + max > self.total_count:
- start_index = self.total_count - self.pager_num + 1
- end_index = self.total_count + 1
- if self.current_page == 1:
- prev = '<a class="page" href="javascript:void(0);">上一页</a>'
- else:
- head = '<a class="page" href="%s?p=%s">首页</a>' % (base_url,1)
- page_list.append(head)
- prev = '<a class="page" href="%s?p=%s">上一页</a>' % (base_url,self.current_page - 1)
- page_list.append(prev)
- for i in range(start_index, end_index):
- if i == self.current_page:
- temp = '<a class="page active" href="%s?p=%s">%s</a>' % (base_url,i, i)
- else:
- temp = '<a class="page" href="%s?p=%s">%s</a>' % (base_url,i,i)
- page_list.append(temp)
- if self.current_page == self.total_count:
- next = '<a class="page" href="javascript:void(0)">下一页</a>'
- else:
- next = '<a class="page" href="%s?p=%s">下一页</a>' % (base_url,self.current_page + 1)
- tail = '<a class="page" href="%s?p=%s">尾页</a>' % (base_url, self.total_count)
- page_list.append(tail)
- page_list.append(next)
- jump = """
- <input type='text'/><a onclick='jumpTo(this,"%s?p=");'>GO</a>
- <script>
- function jumpTo(ths,base) {
- var val = ths.previousSibling.value;
- if(val){
- location.href = base + val;
- }
- }
- </script>
- """%base_url
- page_list.append(jump)
- page_str = "".join(page_list)
- return page_str
应用:
- def user_list(request):
- current_page = request.GET.get('p', 1)
- current_page = int(current_page)
- page_obj = Page(current_page,len(LIST))
- data =LIST[page_obj.start:page_obj.end]
- page_str = page_obj.page_str('/user_list/')
- return render(request,'user_list.html',{'li':data,'page_str':page_str})
python通用分页功能的更多相关文章
- HTML 基于 Python 实现分页功能
前面的话: 1. 网页引用的bootstrap 中的表格,所以需要引入样式类 2. 第一次写文章,不喜勿喷.有不足的地方,可留言我改正,在此先谢过. HTML代码: <!DOCTYPE html ...
- 用Java实现异构数据库的高效通用分页查询功能
不同数据库的分页查询语句有着较大区别,其中MySQL数据的limit offset语法最为简单,而SQL Server数据库和Oracle数据库的分页就比较复杂了. 网上常见的SQL Server和O ...
- Python odoo中嵌入html简单的分页功能
在odoo中,通过iframe嵌入 html,页面数据则通过controllers获取,使用jinja2模板传值渲染 html页面分页内容,这里写了判断逻辑 <!-- 分页 -->< ...
- Django 实现分页功能(django 2.2.7 python 3.7.5 )
Django 自带名为 Paginator 的分页工具, 方便我们实现分页功能.本文就讲解如何使用 Paginator 实现分页功能. 一. Paginator Paginator 类的作用是将我们需 ...
- python2.0_day19_前端分页功能的实现
我们前面完成的客户纪录展示,只有4条,如果有上百条就不能在1页中全部展示了,那样是不人性化的.另外一次性取出来,数据量也比较大.假如现在有95条数据,我们想实现一个每页展示20条,那就分为5页.假如我 ...
- 测试开发【提测平台】分享9-DBUntils优化数据连接&实现应用搜索和分页功能
微信搜索[大奇测试开],关注这个坚持分享测试开发干货的家伙. 从本期开始知识点讲以思维导图的形式给出,内容点会按照讲解-应用-展示的形式体现,这样会更清晰些. DBUntils连接池 在项目中链接数据 ...
- 简单封装分页功能pageView.js
分页是一个很简单,通用的功能.作为一个有经验的前端开发人员,有义务把代码中类似这样公共的基础性的东西抽象出来,一来是改善代码的整体质量,更重要的是为了将来做类似的功能或者类似的项目,能减少不必要的重复 ...
- ReactJS实现的通用分页组件
大家多少都自己写过各种版本的分页工具条吧,像纯服务版的,纯jsWeb板的,Angular版的,因为这个基础得不能再基础的功能太多地方都会用到,下面我给出以个用ReactJS实现的版本,首先上图看下效果 ...
- SQL Server 的通用分页显示存储过程
建立一个 Web 应用,分页浏览功能必不可少.这个问题是数据库处理中十分常见的问题.经典的数据分页方法是:ADO 纪录集分页法,也就是利用ADO自带的分页功能(利用游标)来实现分页.但这种分页方法仅适 ...
随机推荐
- CentOs7环境下手动配置JDK7
下载: JDK7下载地址:http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7- ...
- Java程序员必会常用Linux速查手册
目錄 系统服务管理 文件管理 查看日志 压缩与解压 磁盘和网络管理 防火墙 ftp操作 软件的安装与管理 其他 系统服务管理 systemctl 输出系统中各个服务的状态: systemctl lis ...
- 自定义 Win10 系统鼠标右键发送到的选项
系统默认的右键「发送到」菜单只有几个特定的项目,如果要想发送到其他目标,可通过在资源管理器地址栏中访问 C:\Users\用户名\AppData\Roaming\Microsoft\Windows\S ...
- Python enumerate()内置函数
Python enumerate()内置函数 文章参考 描述 enumerate()函数用于将一个可遍历的数据对象(如列表.元组或字符串)组合成一个索引序列,同时列出数据和数据下标,一般用于for循环 ...
- Spring Boot 使用 @Scheduled 注解创建定时任务
在项目开发中我们经常需要一些定时任务来处理一些特殊的任务,比如定时检查订单的状态.定时同步数据等等. 在 Spring Boot 中使用 @Scheduled 注解创建定时任务非常简单,只需要两步操作 ...
- Windows 10 下 Linux 子系统的安装和使用
介绍 适用于 Windows 的 Linux 子系统(英语:Windows Subsystem for Linux,简称 WSL)是一个为在 Windows 10 和 Windows Server 2 ...
- [NOIP2018模拟赛10.23]发呆报告
闲扯 考场看了眼题目感觉很难,一个小时敲完了所有暴力...嗯然后就在那里发呆什么事也没做 T3考场上把数据结构想了个遍都不会完成1操作,现在看这种思路其实之前也接触过... 比较玄学的一件事情就是T1 ...
- Python内置函数系列
Python内置(built-in)函数随着python解释器的运行而创建.在Python的程序中,你可以随时调用这些函数,不需要定义. 作用域相关(2) locals() :以字典类型返回当前位置 ...
- spingboot启动报驱动Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of th
原因: springboot应用了最新的驱动com.mysql.cj.jdbc.Driver,这个驱动需要用mysql-connector-java包的6.x版本才可以, 而mysql-connect ...
- vue 2.0 + 如何实现加入购物车,小球飞入的动画
github源码地址:https://github.com/13476075014/node-vue/tree/master/mynodeproject/13.sell/sell 在移动端经常会有加入 ...