python分页

简介: 一个简单的分页   # -*- coding: utf-8 -*- class PageResult(list): def __init__(self, total=0, page_no=1, page_size=0, edge_size=0): self.

一个简单的分页

 

# -*- 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

目录
相关文章
|
3月前
|
前端开发 数据库 Python
Python Django项目下的分页和筛选查询
在Django中实现分页功能,视图函数通过`Paginator`处理数据,每页显示10条记录。URL配置支持带参数和不带参数的分页请求。前端模板使用for循环展示分页数据,包括商品信息和状态按钮,并利用分页组件导航。筛选查询视图根据GET请求的`state`参数过滤上架或下架产品,同样实现分页功能。前端添加状态选择下拉框,分页链接携带查询参数`state`确保筛选状态在翻页时保持。
|
4月前
|
PHP Python
基于Python中docx与docxcompose批量合并多个Word文档文件并逐一添加分页符
基于Python中docx与docxcompose批量合并多个Word文档文件并逐一添加分页符
153 1
|
数据采集 存储 Web App开发
如何使用Selenium Python爬取多个分页的动态表格并进行数据整合和分析
在网络爬虫的领域中,动态表格是一种常见的数据展示形式,它可以显示大量的结构化数据,并提供分页、排序、筛选等功能。动态表格的数据通常是通过JavaScript或Ajax动态加载的,这给爬虫带来了一定的挑战。本文将介绍如何使用Selenium Python这一强大的自动化测试工具来爬取多个分页的动态表格,并进行数据整合和分析。
342 0
|
PHP Python
Python合并多个Word文件并批量添加分页符
本文介绍基于Python,实现对多个Word文档加以自动合并,并在每次合并时按要求增添一个分页符的方法~
444 1
Python合并多个Word文件并批量添加分页符
|
数据采集 算法 Python
python 面对post分页爬虫
分享一则对于网抓中面对post请求访问的页面或者在分页过程中需要post请求才可以访问的内容!   面的post请求的网址是不可以零参访问网址的,所以我们在网抓的过程中需要给请求传表单数据,下面看一下网页中post请求的网址:  post请求状态码和get请求的状态码一致,但是在参数中...
2275 0
|
SQL .NET 数据库
python写的一段分页的代码
代码: from django.utils.safestring import mark_safe class Paginator(object): def __init__(self,current_page,total_item_count,base_url,per_page_cou...
590 0
|
3天前
|
数据采集 机器学习/深度学习 数据挖掘
探索Python编程之美:从基础到进阶
【9月更文挑战第4天】在数字时代的浪潮中,编程已成为一种新兴的“超能力”。Python,作为一门易于上手且功能强大的编程语言,正吸引着越来越多的学习者。本文将带领读者走进Python的世界,从零基础出发,逐步深入,探索这门语言的独特魅力和广泛应用。通过具体代码示例,我们将一起解锁编程的乐趣,并理解如何利用Python解决实际问题。无论你是编程新手还是希望提升技能的开发者,这篇文章都将为你打开一扇通往高效编程的大门。
|
4天前
|
数据采集 机器学习/深度学习 数据挖掘
探索Python编程之美:从基础到实战
【9月更文挑战第3天】本文旨在通过深入浅出的方式,带领读者领略Python编程语言的魅力。我们将从基本语法入手,逐步深入至高级特性,最终通过实战案例将理论知识与实践操作相结合。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你提供有价值的见解和技巧。
|
2天前
|
存储 开发者 Python
探索Python编程之美
【9月更文挑战第5天】在这篇文章中,我们将一起踏上一场Python编程的奇妙之旅。从基础语法到高级特性,我们将一步步揭开Python语言的神秘面纱。你将学习如何编写清晰、高效的代码,掌握函数、类和模块的使用,以及理解面向对象编程的核心概念。此外,我们还将探讨异常处理、文件操作等实用技能。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供宝贵的知识和技巧,让你在编程的道路上更加从容自信。
|
3天前
|
API C语言 开发者
Python如何成为跨平台编程的超级巨星:系统调用深度探索
【9月更文挑战第5天】Python 作为一种高级编程语言,凭借简洁的语法、丰富的库支持和强大的社区,迅速在编程界崭露头角。尤其在跨平台编程方面表现卓越,这得益于其解释器设计和对系统调用的深度整合。CPython 采用 C 语言编写,可为不同操作系统编译,使 Python 程序无需修改即可运行。Python 标准库提供了操作系统功能的抽象,如文件操作、进程控制等,隐藏了底层差异,实现了代码的统一。
19 7
下一篇
DDNS