`
ryan.liu
  • 浏览: 136188 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

python分页

 
阅读更多

一个简单的分页

 

# -*- 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分页排序

    python分页; 对字典值为number、str就行分页排序; 对元素为int、str就行分页排序

    python实现分页效果

    本示例提供了一个基本的Python分页控件实现方案,可用于学习和理解分页的基本概念和实现流程。在实际项目开发中,可能还需要考虑更多的细节问题,例如性能优化、异常处理等。此外,还可以结合数据库查询或API接口调...

    Python-一个只需要处理获取的数据的Web分页组件

    在Python Web开发中,数据分页...总的来说,这个Python分页组件简化了Web开发中的数据分页工作,提高了开发效率,同时也提供了足够的灵活性以适应多样化的项目需求。无论是初学者还是经验丰富的开发者,都能从中受益。

    python 实现分页显示从es中获取的数据方法

    #在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__': ...

    python flask实现分页的示例代码

    结合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...

    一个不到150行代码实现的轻量级分页插件

    本篇将介绍一个轻量级的jQuery分页插件,它的代码量不足150行,但功能却非常实用。对于那些希望在网页应用中实现分页功能,而又不想引入过于复杂的库或者插件的开发者来说,这是一个理想的解决方案。这个插件的核心...

    12种分页代码.rar

    8. **Python分页**:在Python的Web开发中,如Django或Flask框架,也有内置的分页支持。Django的`Paginator`和`Page`类,Flask的`flask_paginator`扩展等,都提供了简洁的分页解决方案。 9. **Java分页**:在Java中...

    Python利用flask sqlalchemy实现分页效果

    ### 使用Flask-SQLAlchemy实现分页效果 #### 引言 在Web开发中,当数据量较大时,为了提高用户体验以及减轻服务器负担,通常会采用分页技术展示数据。Flask-SQLAlchemy是一个非常流行的扩展,它为Flask框架提供了...

    基于Python实现Excel数据处理自动化生成Word文档(含索引目录 分页).zip

    在本项目中,我们将探讨如何使用Python编程语言来自动化处理Excel数据,并将其转换为结构化的Word文档,同时包含索引目录和分页功能。这样的任务对于数据报告、数据分析或者日常办公自动化具有很高的实用价值。主要...

    源码 - python 如何使用 pandas 在 flask web 网页中分页显示 csv 文件数据

    python 分页 pandas 数据处理 flask web 框架 jinja 模版 三、菜鸟实战 初始化 Flask 框架,设置路由 jinja 模版 渲染列表数据 分页请求数据 显示详情页数据示例 运行结果 运行截图 列表页数据示例 ...

    python实现分页器功能 utils

    python实现分页器功能 utils

    Python Django 封装分页成通用的模块详解

    在Python Django框架中,为了提高代码的复用性和可维护性,通常会将一些常用的功能封装成模块。本文主要讲解如何将分页功能封装为一个通用的模块,以便在多个视图或应用中方便地调用。 首先,我们需要创建一个名为`...

    python中的分页封装

    python中的分页封装

    PyPI 官网下载 | simple_paginator-0.3.0.tar.gz

    总之,"simple_paginator"是一个Python分页库,通过简化分页逻辑,让开发者能够更专注于他们的核心业务逻辑,而无需花费大量时间在数据分页的实现上。它的存在,体现了Python生态系统中对开发者友好和工具化的重视。

    python 连接网站获取列表分页数据

    该python实现了 https://tool.lu/xiehouyu网站的获取所有列表分页数据

    Python+PyQt5+Mysql通过QSqlQueryModel实现的QTableView分页显示,表头排序等功能

    1)分页显示列表功能包括:前后分页,指定页面跳转,设置单页显示条数 2)点击标题栏实现列表内容排序功能(这个功能花了我很长时间,在全网就没找到合适的解决方法,要不是参考了Qt开发经验,采用了变通解决办法才...

    django自定义分页插件,bootstrap+python+django分页插件

    django+python自定义分页插件,简单易用,只需要三行代码即可展示自定义分页,支持多个展示效果

    python批量从es取数据的方法(文档数超过10000)

    需要注意的是,对于非常大的数据集,可能需要更复杂的分页策略,如滚动搜索(Scroll API)或聚合搜索(Aggregations)。滚动搜索允许在多个请求之间保持搜索上下文,而聚合搜索可用于统计目的,但不适用于获取大量...

Global site tag (gtag.js) - Google Analytics