实现:

  1. class Page:
  2.  
  3. def __init__(self,current_page,data_count,per_page_count=10,pager_num=10):
  4. self.current_page = current_page
  5. self.data_count = data_count
  6. self.per_page_count = per_page_count
  7. self.pager_num = pager_num
  8.  
  9. @property
  10. def start(self):
  11. return (self.current_page-1) * self.per_page_count
  12.  
  13. @property
  14. def end(self):
  15. return self.current_page * self.per_page_count
  16.  
  17. @property
  18. def total_count(self):
  19. total_num,remainder = divmod(self.data_count,self.per_page_count)
  20. if remainder:
  21. total_num += 1
  22. return total_num
  23.  
  24. def page_str(self,base_url):
  25. page_list = []
  26. max = int((self.pager_num+1)/2)
  27. min = int((self.pager_num-1)/2)
  28. if self.total_count < self.pager_num:
  29. start_index = 1
  30. end_index = self.total_count + 1
  31. else:
  32. if self.current_page <= max:
  33. start_index = 1
  34. end_index = self.pager_num + 1
  35. else:
  36. start_index = self.current_page - min
  37. end_index = self.current_page + max
  38. if self.current_page + max > self.total_count:
  39. start_index = self.total_count - self.pager_num + 1
  40. end_index = self.total_count + 1
  41.  
  42. if self.current_page == 1:
  43. prev = '<a class="page" href="javascript:void(0);">上一页</a>'
  44. else:
  45. head = '<a class="page" href="%s?p=%s">首页</a>' % (base_url,1)
  46. page_list.append(head)
  47. prev = '<a class="page" href="%s?p=%s">上一页</a>' % (base_url,self.current_page - 1)
  48. page_list.append(prev)
  49.  
  50. for i in range(start_index, end_index):
  51. if i == self.current_page:
  52. temp = '<a class="page active" href="%s?p=%s">%s</a>' % (base_url,i, i)
  53. else:
  54. temp = '<a class="page" href="%s?p=%s">%s</a>' % (base_url,i,i)
  55. page_list.append(temp)
  56.  
  57. if self.current_page == self.total_count:
  58. next = '<a class="page" href="javascript:void(0)">下一页</a>'
  59. else:
  60. next = '<a class="page" href="%s?p=%s">下一页</a>' % (base_url,self.current_page + 1)
  61. tail = '<a class="page" href="%s?p=%s">尾页</a>' % (base_url, self.total_count)
  62. page_list.append(tail)
  63. page_list.append(next)
  64.  
  65. jump = """
  66. <input type='text'/><a onclick='jumpTo(this,"%s?p=");'>GO</a>
  67. <script>
  68. function jumpTo(ths,base) {
  69. var val = ths.previousSibling.value;
  70. if(val){
  71. location.href = base + val;
  72. }
  73. }
  74. </script>
  75. """%base_url
  76.  
  77. page_list.append(jump)
  78. page_str = "".join(page_list)
  79. return page_str

应用:

  1. def user_list(request):
  2. current_page = request.GET.get('p', 1)
  3. current_page = int(current_page)
  4. page_obj = Page(current_page,len(LIST))
  5. data =LIST[page_obj.start:page_obj.end]
  6. page_str = page_obj.page_str('/user_list/')
  7. 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. CentOs7环境下手动配置JDK7

    下载: JDK7下载地址:http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7- ...

  2. Java程序员必会常用Linux速查手册

    目錄 系统服务管理 文件管理 查看日志 压缩与解压 磁盘和网络管理 防火墙 ftp操作 软件的安装与管理 其他 系统服务管理 systemctl 输出系统中各个服务的状态: systemctl lis ...

  3. 自定义 Win10 系统鼠标右键发送到的选项

    系统默认的右键「发送到」菜单只有几个特定的项目,如果要想发送到其他目标,可通过在资源管理器地址栏中访问 C:\Users\用户名\AppData\Roaming\Microsoft\Windows\S ...

  4. Python enumerate()内置函数

    Python enumerate()内置函数 文章参考 描述 enumerate()函数用于将一个可遍历的数据对象(如列表.元组或字符串)组合成一个索引序列,同时列出数据和数据下标,一般用于for循环 ...

  5. Spring Boot 使用 @Scheduled 注解创建定时任务

    在项目开发中我们经常需要一些定时任务来处理一些特殊的任务,比如定时检查订单的状态.定时同步数据等等. 在 Spring Boot 中使用 @Scheduled 注解创建定时任务非常简单,只需要两步操作 ...

  6. Windows 10 下 Linux 子系统的安装和使用

    介绍 适用于 Windows 的 Linux 子系统(英语:Windows Subsystem for Linux,简称 WSL)是一个为在 Windows 10 和 Windows Server 2 ...

  7. [NOIP2018模拟赛10.23]发呆报告

    闲扯 考场看了眼题目感觉很难,一个小时敲完了所有暴力...嗯然后就在那里发呆什么事也没做 T3考场上把数据结构想了个遍都不会完成1操作,现在看这种思路其实之前也接触过... 比较玄学的一件事情就是T1 ...

  8. Python内置函数系列

    Python内置(built-in)函数随着python解释器的运行而创建.在Python的程序中,你可以随时调用这些函数,不需要定义. 作用域相关(2) locals()  :以字典类型返回当前位置 ...

  9. 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 ...

  10. vue 2.0 + 如何实现加入购物车,小球飞入的动画

    github源码地址:https://github.com/13476075014/node-vue/tree/master/mynodeproject/13.sell/sell 在移动端经常会有加入 ...