一个简单的分页
# -*- coding: utf-8 -*-
class PageResult(list):
def __init__(self, total=0, page_no=1, page_size=0, edge_size=0):
self.total = total
self.page_size = page_size if page_size > 0 else 0
self.edge_size = edge_size if edge_size > 0 else 0
if page_no <= 0:
self.no = 1
elif self.max >=1 and page_no > self.max:
self.no = self.max
else:
self.no = page_no
@property
def start(self):
return (self.no - 1) * self.page_size
@property
def max(self):
if self.page_size > 0:
return (self.total + self.page_size - 1) / self.page_size
else: #不分页,显示全部条目
return 1
@property
def has_prev(self):
return self.no > 1
@property
def has_next(self):
return self.no < self.max
@property
def slider(self):
if self.edge_size > 0:
start = max(self.no - self.edge_size, 1)
stop = min(self.no + self.edge_size, self.max)
else: #不滑窗,显示全部页码
start, stop = 1, self.max
return range(start, stop + 1)
def clear(self):
del self[:]
def page_dict(self):
page = {"curr_page":self.no, "data_count":self.total, "page_count":self.max}
page["has_prev"], page["has_next"] = self.has_prev, self.has_next
page["page_range"] = self.slider
return page
class Pagination(object):
def __init__(self, query):
self.query = query
def all(self, offset=0, limit=0):
if limit == 0:
return self.query.all()
else:
return self.query.offset(offset).limit(limit).all() #SQLAlchemy orm
return self.query.all()[offset : offset + limit] #Django orm
def count(self):
return self.query.count()
def head(self):
return self.query.first()
def paginate(self, page_no=1, page_size=0, edge_size=0):
result = PageResult(self.count(), page_no, page_size, edge_size)
result.extend( self.all(result.start, result.page_size) )
return result
分享到:
相关推荐
python分页; 对字典值为number、str就行分页排序; 对元素为int、str就行分页排序
本示例提供了一个基本的Python分页控件实现方案,可用于学习和理解分页的基本概念和实现流程。在实际项目开发中,可能还需要考虑更多的细节问题,例如性能优化、异常处理等。此外,还可以结合数据库查询或API接口调...
在Python Web开发中,数据分页...总的来说,这个Python分页组件简化了Web开发中的数据分页工作,提高了开发效率,同时也提供了足够的灵活性以适应多样化的项目需求。无论是初学者还是经验丰富的开发者,都能从中受益。
#在python3上运行 from elasticsearch import Elasticsearch from urllib3.connectionpool import xrange def get_page_data(result): for hit in result['hits']['hits']: print(hit) if __name__=='__main__': ...
结合mysql数据库查询,实现分页效果 @user.route("/user_list",methods=['POST','GET']) def user_list(): p = g.args.get("p", '') #页数 show_shouye_status = 0 #显示首页状态 if p =='': p=1 else: p=int...
本篇将介绍一个轻量级的jQuery分页插件,它的代码量不足150行,但功能却非常实用。对于那些希望在网页应用中实现分页功能,而又不想引入过于复杂的库或者插件的开发者来说,这是一个理想的解决方案。这个插件的核心...
8. **Python分页**:在Python的Web开发中,如Django或Flask框架,也有内置的分页支持。Django的`Paginator`和`Page`类,Flask的`flask_paginator`扩展等,都提供了简洁的分页解决方案。 9. **Java分页**:在Java中...
### 使用Flask-SQLAlchemy实现分页效果 #### 引言 在Web开发中,当数据量较大时,为了提高用户体验以及减轻服务器负担,通常会采用分页技术展示数据。Flask-SQLAlchemy是一个非常流行的扩展,它为Flask框架提供了...
在本项目中,我们将探讨如何使用Python编程语言来自动化处理Excel数据,并将其转换为结构化的Word文档,同时包含索引目录和分页功能。这样的任务对于数据报告、数据分析或者日常办公自动化具有很高的实用价值。主要...
python 分页 pandas 数据处理 flask web 框架 jinja 模版 三、菜鸟实战 初始化 Flask 框架,设置路由 jinja 模版 渲染列表数据 分页请求数据 显示详情页数据示例 运行结果 运行截图 列表页数据示例 ...
python实现分页器功能 utils
在Python Django框架中,为了提高代码的复用性和可维护性,通常会将一些常用的功能封装成模块。本文主要讲解如何将分页功能封装为一个通用的模块,以便在多个视图或应用中方便地调用。 首先,我们需要创建一个名为`...
python中的分页封装
总之,"simple_paginator"是一个Python分页库,通过简化分页逻辑,让开发者能够更专注于他们的核心业务逻辑,而无需花费大量时间在数据分页的实现上。它的存在,体现了Python生态系统中对开发者友好和工具化的重视。
该python实现了 https://tool.lu/xiehouyu网站的获取所有列表分页数据
1)分页显示列表功能包括:前后分页,指定页面跳转,设置单页显示条数 2)点击标题栏实现列表内容排序功能(这个功能花了我很长时间,在全网就没找到合适的解决方法,要不是参考了Qt开发经验,采用了变通解决办法才...
django+python自定义分页插件,简单易用,只需要三行代码即可展示自定义分页,支持多个展示效果
需要注意的是,对于非常大的数据集,可能需要更复杂的分页策略,如滚动搜索(Scroll API)或聚合搜索(Aggregations)。滚动搜索允许在多个请求之间保持搜索上下文,而聚合搜索可用于统计目的,但不适用于获取大量...