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自带的分页功能(利用游标)来实现分页.但这种分页方法仅适 ...
随机推荐
- todo---jaxen
- Tcp问题汇总
一 TCP三次握手 PS:TCP协议中,主动发起请求的一端称为『客户端』,被动连接的一端称为『服务端』.不管是客户端还是服务端,TCP连接建立完后都能发送和接收数据. 起初,服务器和客户端都为CLOS ...
- Word 分栏页码,一个页面两个不同页码的设置
1. 前言 在一些报纸.杂志中,我们可以见到各种各样的排版风格效果,其中有一种效果是一个页面设置了两栏,并且每栏下面都有不同的页码,那么,这种效果是如何实现的呢?这种页码在Word中默认页码样式中是没 ...
- mysql中char和varchar区别
char是一种固定长度的类型,varchar则是一种可变长度的类型 char(M)类型的数据列里,每个值都占用M个字节,如果某个长度小于M,MySQL就会在它的右边用空格字符补足.(在检索操作中那些 ...
- 『Python基础』第4节:基础数据类型初识
本节只是对基础数据类型做个简单介绍, 详情会在之后慢慢介绍 什么是数据类型? 我们人类可以分清数字与字符串的区别, 可是计算机不能. 虽然计算机很强大, 但在某种程度上又很傻, 除非你明确告诉它数字与 ...
- Tomcat安装及其目录结构介绍
Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选. Tomcat的安装版本有绿色解压 ...
- 获取类的描述信息 DescriptionAttribute
static void Main(string[] args) { var attrs = typeof(TestClass).GetCustomAttributes(typeof(System.Co ...
- Vue字符串padStart和padEnd方法
padStart()用于头部补全,padEnd()用于尾部补全. 'a'.padStart(3, '0') // '00a' 'x'.padEnd(5, 'ab') // 'xabab' 'x'.pa ...
- ES6 class 于 继承 extends
之前构造函数,没有类的概念,ES6中有了class类这个东西. 简单的一个例子: 输出: 需要注意的是,语法换了,但是构造函数.构造函数的原型.实例的关系还是那样. 输出: 需要注意写法: 底层还是p ...
- string+DP leetcode-4.最长回文子串
5. Longest Palindromic Substring 题面 Given a string s, find the longest palindromic substring in s. Y ...