page.py

'''

django内使用方式:

all_count = models.UserInfo.objects.all().count()

# path_info 当前页的url

# all_count所有用户信息的数量

# 10 一页显示的数量

page_info = PageInfo(request.GET.get('p'),10,all_count,request.path_info)

print(page_info.end())

user_list = models.UserInfo.objects.all()[page_info.start():page_info.end()]

'''

  1. class PageInfo(object):
  2. def __init__(self,current_page,per_page_num,all_count,base_url,page_range=7):
  3. '''
  4. :param current_page: 当前页
  5. :param per_page_num: 每页显示数据的条数
  6. :param all_count: 数据库用户总个数
  7. :param base_url: 生成页码标签的前缀
  8. :param page_range: 页面最多显示的页码个数
  9. '''
  10. try:
  11. current_page = int(current_page)
  12. except Exception as e:
  13. current_page = int(1)
  14. self.current_page = current_page
  15. self.per_page_num = per_page_num
  16. self.all_count = all_count
  17. a,b = divmod(all_count,per_page_num)
  18. if b != 0:
  19. self.all_page = a + 1
  20. else:
  21. self.all_page = a
  22. self.base_url = base_url
  23. self.page_range = page_range
  24. def start(self):
  25. return (self.current_page - 1)*self.per_page_num
  26. def end(self):
  27. return self.current_page * self.per_page_num
  28. def page_str(self):
  29. '''
  30. 在HTML页面中显示页码信息
  31. :return:
  32. '''
  33. '''
  34. <nav aria-label="...">
  35. <ul class="pager">
  36. <li><a href="#">Previous</a></li>
  37. <li><a href="#">Next</a></li>
  38. </ul>
  39. </nav>
  40. '''
  41. page_list = []
  42. if self.current_page <= 1:
  43. prev = "<li><a href='#'>上一页</a></li>"
  44. else:
  45. prev = "<li><a href='%s?p=%s'>上一页</a></li>"%(self.base_url ,self.current_page - 1,)
  46. page_list.append(prev)
  47. if self.all_page <=self.page_range:
  48. start = 1
  49. end = self.all_page+1
  50. else:
  51. # 页数
  52. if self.current_page > int(self.page_range/2):
  53. if (self.current_page + int(self.page_range/2)) > self.all_page:
  54. start = self.all_page - self.page_range + 1
  55. end = self.all_page + 1
  56. else:
  57. start = self.current_page-int(self.page_range/2)
  58. end = self.current_page+int(self.page_range/2)+1
  59. else:
  60. start = 1
  61. end = self.page_range+1
  62. for i in range(start,end):
  63. if self.current_page == i:
  64. temp = "<li class='active'><a href='%s?p=%s'>%s</a></li>" %(self.base_url,i,i)
  65. else:
  66. temp = "<li ><a href='%s?p=%s'>%s</a></li>" % (self.base_url, i, i)
  67. page_list.append(temp)
  68. if self.current_page >= self.all_page:
  69. nex = "<li><a href='#'>下一页</a></li>"
  70. else:
  71. nex = "<li><a href='%s?p=%s'>下一页</a></li>"%(self.base_url, self.current_page + 1,)
  72. page_list.append(nex)
  73. return ''.join(page_list)

python-分页代码的更多相关文章

  1. Python分页转Mybatis pagehelper格式分页

    最近工作里遇到一个需求要把之前用Java写的一个http接口替换成用Python写的,出参是带了mybatis pageHelper中PageInfo信息的一个JSON串,而Python这边分页不会涉 ...

  2. Oracle中经典分页代码!

    在Oracle中因为没有top关键字,所以在sqlserver中的分页代码并不适用于Oracle,那么在Oracle中如何来实现分页呢? --查询所有数据 STUNO STUNAME STUAGE S ...

  3. Python一行代码

    1:Python一行代码画出爱心 print]+(y*-)**-(x**(y*<= ,)]),-,-)]) 2:终端路径切换到某文件夹下,键入: python -m SimpleHTTPServ ...

  4. python爬虫代码

    原创python爬虫代码 主要用到urllib2.BeautifulSoup模块 #encoding=utf-8 import re import requests import urllib2 im ...

  5. 纯js分页代码(简洁实用)

    纯js写的分页代码. 复制代码代码如下: //每页显示字数 PageSize=5000; //分页模式 flag=2;//1:根据字数自动分页 2:根据[NextPage]分页 //默认页 start ...

  6. PHP分页初探 一个最简单的PHP分页代码实现

    PHP分页代码在各种程序开发中都是必须要用到的,在网站开发中更是必选的一项. 要想写出分页代码,首先你要理解SQL查询语句:select * from goods limit 2,7.PHP分页代码核 ...

  7. JAVAEE——BOS物流项目05:OCUpload、POI、pinyin4J、重构分页代码、分区添加、combobox

    1 学习计划 1.实现区域导入功能 n OCUpload一键上传插件使用 n 将文件上传到Action n POI简介 n 使用POI解析Excel文件 n 完成数据库操作 n 使用pinyin4J生 ...

  8. PHP分页初探 一个最简单的PHP分页代码的简单实现

    PHP分页代码在各种程序开发中都是必须要用到的,在网站开发中更是必选的一项. 要想写出分页代码,首先你要理解SQL查询语句:select * from goods limit 2,7.PHP分页代码核 ...

  9. Python小代码_2_格式化输出

    Python小代码_2_格式化输出 name = input("name:") age = input("age:") job = input("jo ...

  10. Python小代码_1_九九乘法表

    Python小代码_1_九九乘法表 max_num = 9 row = 1 while row <= max_num: col = 1 while col <= row: print(st ...

随机推荐

  1. DynamicXml

    /* var xml = @"<root><books><book is_read=""false""><a ...

  2. IOS开发之UITabBarController与UINavigationController混合使用

    ios开发中UITabBarController与UINavigationController混合使用是很多app的基础页面结构,下面是简单的的页面初始化的方法,在AppDelegate.m的 - ( ...

  3. SpringBoot构建RESTful service完成Get和Post

    一个基本的RESTfule service最进场向外提供的请求Method就是Get和Post. 在Get中,常用的都会在请求上带上参数,或者是路径参数.响应Json. 在Post中,常用的会提交fo ...

  4. WebSphere之Web Server插件

    WebSphere之Web Server插件 -----------------------------------2013/10/19 这里记录一下WebSphere与IHS的安装集成,和Web S ...

  5. MATLAB匹配按列碎开的纸片

    纵向切开的纸片的拼接 2013 CUMCM_B %% paper_cutting.m clear, close all clc %% import pictures, and save into im ...

  6. css实现未知高度水平垂直居中

    页面设计中,经常需要实现元素的水平垂直居中,css实现的方法有很多(列如: margin: auto.position定位.css表达式calc().使用css预处理.table等都可以实现水平居中) ...

  7. JS和OC交互的简单应用

    先简单地说一下思路吧 需求:在App中嵌入一个webView,已经有了网址,但是需要去掉这个网页中的一些内容 解决方案:取到webView要加载的网址,对这个网址对应的网页信息进行修改 简单描述: 遵 ...

  8. css3类选择器之结合元素选择器和多类选择器

    css3类选择器之结合元素选择器和多类选择器用法: <!DOCTYPE html> <html lang="en"> <head> <me ...

  9. ELK搭建指南(linux及Windows)

    当前公司系统使用mongodb记录日志,最近想对日志做可视化分析,尝试了exceptionless,感觉扩展性不高,所以尝试搭建elk,过程如下: ELK核心由三部分组成: Elasticsearch ...

  10. CentOS下安装JDK7

    下载地址:http://www.oracle.com/technetwork/java/javase/downloads/java-se-jdk-7-download-432154.html 1. 安 ...