实现:

 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通用分页功能的更多相关文章

  1. HTML 基于 Python 实现分页功能

    前面的话: 1. 网页引用的bootstrap 中的表格,所以需要引入样式类 2. 第一次写文章,不喜勿喷.有不足的地方,可留言我改正,在此先谢过. HTML代码: <!DOCTYPE html ...

  2. 用Java实现异构数据库的高效通用分页查询功能

    不同数据库的分页查询语句有着较大区别,其中MySQL数据的limit offset语法最为简单,而SQL Server数据库和Oracle数据库的分页就比较复杂了. 网上常见的SQL Server和O ...

  3. Python odoo中嵌入html简单的分页功能

    在odoo中,通过iframe嵌入 html,页面数据则通过controllers获取,使用jinja2模板传值渲染 html页面分页内容,这里写了判断逻辑 <!-- 分页 -->< ...

  4. Django 实现分页功能(django 2.2.7 python 3.7.5 )

    Django 自带名为 Paginator 的分页工具, 方便我们实现分页功能.本文就讲解如何使用 Paginator 实现分页功能. 一. Paginator Paginator 类的作用是将我们需 ...

  5. python2.0_day19_前端分页功能的实现

    我们前面完成的客户纪录展示,只有4条,如果有上百条就不能在1页中全部展示了,那样是不人性化的.另外一次性取出来,数据量也比较大.假如现在有95条数据,我们想实现一个每页展示20条,那就分为5页.假如我 ...

  6. 测试开发【提测平台】分享9-DBUntils优化数据连接&实现应用搜索和分页功能

    微信搜索[大奇测试开],关注这个坚持分享测试开发干货的家伙. 从本期开始知识点讲以思维导图的形式给出,内容点会按照讲解-应用-展示的形式体现,这样会更清晰些. DBUntils连接池 在项目中链接数据 ...

  7. 简单封装分页功能pageView.js

    分页是一个很简单,通用的功能.作为一个有经验的前端开发人员,有义务把代码中类似这样公共的基础性的东西抽象出来,一来是改善代码的整体质量,更重要的是为了将来做类似的功能或者类似的项目,能减少不必要的重复 ...

  8. ReactJS实现的通用分页组件

    大家多少都自己写过各种版本的分页工具条吧,像纯服务版的,纯jsWeb板的,Angular版的,因为这个基础得不能再基础的功能太多地方都会用到,下面我给出以个用ReactJS实现的版本,首先上图看下效果 ...

  9. SQL Server 的通用分页显示存储过程

    建立一个 Web 应用,分页浏览功能必不可少.这个问题是数据库处理中十分常见的问题.经典的数据分页方法是:ADO 纪录集分页法,也就是利用ADO自带的分页功能(利用游标)来实现分页.但这种分页方法仅适 ...

随机推荐

  1. 【51nod】1634 刚体图

    [51nod]1634 刚体图 给一个左边n个点右边m个点二分图求合法的连通图个数,每条边选了之后会带来价值乘2的贡献 类似城市规划那道题的计数 设\(g[i][j]\)为左边\(i\)个点,右边\( ...

  2. PHP二维数组的引用赋值容易犯的错误

    大家一起来分析一下下面这段代码: <?php $arr = array(); $arr["abc"] = array("sex" => 100, & ...

  3. Redis慢日志取出来

    http://blog.chinaunix.net/uid-31396856-id-5758295.htmlhttps://blog.51cto.com/legehappy/2151986?sourc ...

  4. golang以服务方式运行

    golang开发的二进制程序,一般需要长期后台运行的,在linux上可以用supervisor或upstart或systemd等第三方守护进程来实现.其实golang自己也可以实现以服务的形式常驻后台 ...

  5. 关于C#7 新语法糖

    C#7新语法糖 1.Switch 使用  goto 使用 ; switch (kk) { : Console.WriteLine(); ; : Console.WriteLine(); ; : Con ...

  6. (十)springmvc之文件的处理

    一.同步上传文件 导入common-fileupload这个jar包. 配置     springmvc-servlet.xml <?xml version="1.0" en ...

  7. (五)springmvc之获取表单提交的数据

    8.1:使用Request <form method="post" id="form1" action="<%=request.getCo ...

  8. 数据库及MySQL基础(1)

    1.数据库概述 关系型数据库:面对关系,Java面向对象. ·常见数据库 Oracle(神喻):甲骨文 DB2:IBM SQL Server:微软 Sybase:赛尔斯 MySQL:甲骨文,最早是开源 ...

  9. C#基础--go to

    goto语句的用法非常灵活,你可以用它实现很多功能,但是由于goto语句的跳转影响程序的结构,在使用的时候会使人迷茫,所以一般"教材"上都不建议使用,但是用它可以实现递归,循环,选 ...

  10. winform PictureBox图片上动态添加Label或其他控件

    效果图: 代码: //分页或者多次加载时,需要删除之前产生的lable等控件 ; tabID < ; tabID++) { foreach (Control control in this.ta ...