分页组件的实现:

class Pagination(object):"""自定义分页"""def __init__(self,current_page,total_count,base_url,params,per_page_count=10,max_pager_count=11):try:current_page = int(current_page)except Exception as e:current_page = 1if current_page <=0:current_page = 1self.current_page = current_page# 数据总条数self.total_count = total_count# 每页显示10条数据self.per_page_count = per_page_count# 页面上应该显示的最大页码max_page_num, div = divmod(total_count, per_page_count)if div:max_page_num += 1self.max_page_num = max_page_num# 页面上默认显示11个页码(当前页在中间)self.max_pager_count = max_pager_countself.half_max_pager_count = int((max_pager_count - 1) / 2)# URL前缀self.base_url = base_url# request.GETimport copyparams = copy.deepcopy(params)params._mutable = True# 包含当前列表页面所有的搜索条件# {source:[2,], status:[2], gender:[2],consultant:[1],page:[1]}# self.params[page] = 8# self.params.urlencode()# source=2&status=2&gender=2&consultant=1&page=8# href="/hosts/?source=2&status=2&gender=2&consultant=1&page=8"# href="%s?%s" %(self.base_url,self.params.urlencode())self.params = params@property         这个property 的作用是,在调用的时候不用加上括号,直接使用self.start即可def start(self):return (self.current_page - 1) * self.per_page_count@propertydef end(self):return self.current_page * self.per_page_countdef page_html(self):# 如果总页数 <= 11if self.max_page_num <= self.max_pager_count:pager_start = 1pager_end = self.max_page_num# 如果总页数 > 11else:# 如果当前页 <= 5if self.current_page <= self.half_max_pager_count:pager_start = 1pager_end = self.max_pager_countelse:# 当前页 + 5 > 总页码if (self.current_page + self.half_max_pager_count) > self.max_page_num:pager_end = self.max_page_numpager_start = self.max_page_num - self.max_pager_count + 1   #倒这数11个else:pager_start = self.current_page - self.half_max_pager_countpager_end = self.current_page + self.half_max_pager_countpage_html_list = []# {source:[2,], status:[2], gender:[2],consultant:[1],page:[1]}# 首页self.params['page'] = 1first_page = '<li><a href="%s?%s">首页</a></li>' % (self.base_url,self.params.urlencode(),)page_html_list.append(first_page)# 上一页self.params["page"] = self.current_page - 1if self.params["page"] < 1:pervious_page = '<li class="disabled"><a href="%s?%s" aria-label="Previous">上一页</span></a></li>' % (self.base_url, self.params.urlencode())else:pervious_page = '<li><a href = "%s?%s" aria-label = "Previous" >上一页</span></a></li>' % (self.base_url, self.params.urlencode())page_html_list.append(pervious_page)# 中间页码for i in range(pager_start, pager_end + 1):self.params['page'] = iif i == self.current_page:temp = '<li class="active"><a href="%s?%s">%s</a></li>' % (self.base_url,self.params.urlencode(), i,)else:temp = '<li><a href="%s?%s">%s</a></li>' % (self.base_url,self.params.urlencode(), i,)page_html_list.append(temp)# 下一页self.params["page"] = self.current_page + 1if self.params["page"] > self.max_page_num:self.params["page"] = self.current_pagenext_page = '<li class="disabled"><a href = "%s?%s" aria-label = "Next">下一页</span></a></li >' % (self.base_url, self.params.urlencode())else:next_page = '<li><a href = "%s?%s" aria-label = "Next">下一页</span></a></li>' % (self.base_url, self.params.urlencode())page_html_list.append(next_page)# 尾页self.params['page'] = self.max_page_numlast_page = '<li><a href="%s?%s">尾页</a></li>' % (self.base_url, self.params.urlencode(),)page_html_list.append(last_page)return ''.join(page_html_list)

分页组件的使用

"""
自定义分页组件的使用方法:pager_obj = Pagination(request.GET.get('page',1),len(HOST_LIST),request.path_info,request.GET)host_list = HOST_LIST[pager_obj.start:pager_obj.end]html = pager_obj.page_html()     ----->这里返回的是page_html_listreturn render(request,'hosts.html',{'host_list':host_list,"page_html":html})
"""

按照上面我们在前端之间传入数据到py文件中

pager_obj = Pagination(request.GET.get('page',1),len(HOST_LIST),request.path_info,request.GET)
request.GET.get('page',1)    ------》   current_page
len(HOST_LIST)         ------》   total_count(这里要是数据库的话,我们可以取总条数)
request.path_info            ------》   base_Url
request.GET           ------》  params        

原文章转自:

http://www.cnblogs.com/haiyan123/p/8065353.html

转载于:https://www.cnblogs.com/smail-bao/p/9967832.html

Python分页组件相关推荐

  1. Python自定义分页组件

    为了防止XSS即跨站脚本攻击,需要加上 safe # 路由 from django.conf.urls import url from django.contrib import admin from ...

  2. 与服务器交互的分页组件PageComponent

    2019独角兽企业重金招聘Python工程师标准>>> Ext.define('tools.PageComponent', {extend : 'Ext.Container',req ...

  3. 我的react组件化开发道路(二) 分页 组件开发

    2019独角兽企业重金招聘Python工程师标准>>> 上一篇文章主要写了关于react组件化开发的一些基本配置,慢慢的深入到每个组件的详细介绍中,今天我们就来分享react的分页组 ...

  4. Django 分页组件替换自定义分页

    Django的分页器(paginator) 总之不太好用我们还是用自己的好一些 自定义分页器 分页实现源码 """ 自定义分页组件 """c ...

  5. Fit项目分页组件的编写

    2019独角兽企业重金招聘Python工程师标准>>> 项目中涉及列表显示的地方都会用到分页控件,为了能更好地与当前网站的样式匹配,这次要自己实现一个. 所以选择了模板中提供的分页样 ...

  6. SpringBoot分页组件PageHelper介绍及使用

    2019独角兽企业重金招聘Python工程师标准>>> 这篇主要说一下上篇介绍的mybatis分页组件,如果你们觉得没必要,非要自己封装分页,也是可以的啦,就像博主上一篇,自己写个分 ...

  7. 使用 java 的 displaytag1.2 分页组件使用步骤

    今天我的小博客项目写完了,心情挺好,发表篇 java web开发的 分页组件使用技巧吧,在这里面, 我不想 啰嗦,直接 我把我的使用方式 写了出来,希望 给 我们为 java 分页 节省更多的时间做更 ...

  8. YII2中分页组件的使用

    当数据过多,无法一页显示时,我们经常会用到分页组件,YII2中已经帮我们封装好了分页组件. 首先我们创建操作数据表的AR模型: <?phpnamespace app\models;use yii ...

  9. 基于jquery的php分页,基于jQuery封装的分页组件

    前言: 由于项目需要实现分页效果,上jQuery插件库找了下,但是木有找到自己想要的效果,于是自己封装了个分页组件. 思路: 主要是初始化时基于原型建立的分页模板然后绑定动态事件并实现刷新DOM的分页 ...

最新文章

  1. 如何采用简化方法进行需求分析
  2. pytorch 学习笔记目录
  3. 【渝粤题库】陕西师范大学165107工作分析与设计作业(高起专)
  4. 创建基于webpack打包的vue项目
  5. python学习:删除空白
  6. 【深度学习】损失函数记录
  7. 三大检索工具(SCI、EI、ISTP)
  8. python怎么安装lxml库_lxml解析库的安装和使用
  9. 商用密码产品认证-密码机(概述)
  10. 大家好,我是达叔,我创建了一个做项目的星球【达叔与他的朋友们】,来吗?...
  11. LPC1768 SPI 外设控制DA(PCM1796)调试记录
  12. HUNNU 11786 Sir Charles Antony Richard Hoare
  13. 纯html+css实现点击切换tab页
  14. 做跨境电商的Anker的也回来“内卷”了?
  15. mysql引用表无效列_Mysql使用索引可能失效的场景
  16. 资深程序员骆昊:Python从新手到大师,100天完整学习路线
  17. mysql设置id起点_mysql自增ID起始值修改方法
  18. linux蓝牙语音遥控器,Linux系统下遥控器的配置与使用方法
  19. 减少银行和金融机构的客户流失
  20. php微博互粉网站源代码,PHP联合【新浪微博】实现第三方登陆

热门文章

  1. python 装饰器 参数-python函数装饰器之带参数的函数和带参数的装饰器用法示例...
  2. python基础代码事例-Python基础总结成千行代码,让Python入门更简单!
  3. python学习方向-Python学习者的发展方向
  4. 零基础学python需要多久-零基础学习Python大概要多久,感悟分享?
  5. python爬虫吧-Python爬虫如何爬取贴吧内容
  6. 上海python培训比较好的机构-上海python培训机构哪个好?
  7. 爬虫好学吗python-爬虫Python入门好学吗?学什么?
  8. python3教程-终于清楚python3详细教程
  9. c+还是python好-既然C+不如Java、Python,为什么还要学C+?
  10. python自动测试p-python 自动化测试 pytest 的使用