django的分页机制

Django 之Paginator Django 之分页 阅读详情

 

Django 1.0 中分页机制和先前已经大不相同。它提供了一些类协助你把数据分页。 对应的文件为 django/core/paginator.py

举例

类Paginator,带两个构造参数,一个就是数据的集合,另一个表示每页放几个数据。

>>> from django.core.paginator import Paginator
>>> objects = ['john', 'paul', 'george', 'ringo']
>>> p = Paginator(objects, 2)

>>> p.count
4
>>> p.num_pages
2
>>> p.page_range
[1, 2]

>>> page1 = p.page(1)
>>> page1
<Page 1 of 2>
>>> page1.object_list
['john', 'paul']

>>> page2 = p.page(2)
>>> page2.object_list
['george', 'ringo']
>>> page2.has_next()
False
>>> page2.has_previous()
True
>>> page2.has_other_pages()
True
>>> page2.next_page_number()
3
>>> page2.previous_page_number()
1
>>> page2.start_index() # The 1-based index of the first item on this page
3
>>> page2.end_index() # The 1-based index of the last item on this page
4

>>> p.page(0)
...
EmptyPage: That page number is less than 1
>>> p.page(3)
...
EmptyPage: That page contains no results

Note

Paginator 的第一个参数可以是list,tuple,QuerySet 或者任意对象————只要它 有 count() 或者 __len__() 函数。 Django后台会先尝试调用count()``。如果 不可行,再定要 ``len() 。

在视图中使用 Paginator

下面是一个复杂点的分页例子。也就是把查询子集在视图中分页显示。下面演示了如何结合视图 view,模板template来显示结果。前提是假设``Contacts`` model 已经被导入。

视图view 函数:

 

在模板文件 list.html 中,将显示每个对象的一些信息,以及导航标记。:

 

构造函数:

Paginator(object_list, per_page, orphans=0, allow_empty_first_page=True)

必传参数

object_list
一个list,tuple,django的QuerySet,或者拥有``count()``或``__len__()``方法的 可分解对象。
per_page
每一页最大的对象个数。

可选参数

orphans
最后一页对象的最少数目,默认为0。 如果想避免最后一页显示太少。则可以使用这个值。 那么最后一页的数据,自动被前移一页。比如总共23个数据。每页显示 10.  orphans=3 那么,第一页为10,第二页为13.
allow_empty_first_page
表示首页是否可以为空,如果是  False 而且``object_list`` 为空,那么会触发  EmptyPage 异常。

方法

Paginator.page(number)

根据索引number,返回一个’Page’对象,如果不存在,引起 InvalidPage异常

属性

Paginator.count

所有对象的总数, 尝试通过``object_list.count()``和``object_list.__len__()`` 取得

Paginator.num_pages

总共的页数

Paginator.page_range

页的范围,比如  [1, 2, 3, 4] 。

InvalidPage 异常

当页面不存在或者无效时,会引起``InvalidPage``异常,一般这个异常就够用,如果需要更 详细信息,还有``PageNotAnInteger``,``EmptyPage``可用:

PageNotAnInteger
page() 的参数非整数。
EmptyPage
page(x) ,第x页没数据。

上述两个都是 InvalidPage 的子类。 用一个简单的 except InvalidPage 就可以处理。

Page 类

Page(object_list, number, paginator):

一般不需用户自己构造,通过`Paginator.page` 生成。

方法

Page.has_next()

如果下一页存在,返回True。

Page.has_previous()

如果前一页存在返回  True

Page.has_other_pages()

如果上一页面或者下一页存在,返回``True``

Page.next_page_number()

返回下一页的索引,这个函数比较傻(不管下一页是否存在,都是简单的+1)

Page.previous_page_number()

返回上一页的索引,其他同上

Page.start_index()

返回当前页,第一个对象的索引。

Page.end_index()

道理同上。

属性

Page.object_list

当前页对象列表

Page.number

当前页的索引

Page.paginator

和page相关的分页类
储能BMS三级架构解析:从模组到堆的管理与控制 本文深入解析了储能电池管理系统(BMS)的核心三级架构,即电池模组管理层(BMU)、电池簇管理层(BCMU)和电池堆管理层(BAMS)。文章详细阐述了各级的职能分工与协同机制,从底层数据采集、均衡管理,到中层信息汇总与安全控制,再到顶层的系统总控与对外通信,揭示了该架构如何实现大规模储能电池的精细化、安全与高效管理。 阅读详情

相关推荐

IEEE Transaction期刊模板使用注意事项

本文将总结使用IEEE Transactions系列期刊的投稿模板时的一些注意事项,包括模板本身的使用规范、参考文献的正确格式等其他内容。

weixin_39529207的博客 2万+

Django 使用Paginator分页器

Django中的Paginator是一个用于分页查询结果的工具,它允许您将大量的数据分割成小块,以便更容易在Web页面上进行展示和浏览。Paginator通常与Django的视图(View)结合使用,以支持分页功能。Paginator是Django框架中用于分页的类。它允许您将大量数据划分成小块,以便更好地展示在Web页面上,同时提供了简单而强大的分页功能。

微软技术分享 9895

Moltemplate建模----水盒子data文件

1功能介绍 Moltemplate是LAMMPS官方支持的建模工具之一,适用于LAMMPS建模。该程序创建了一种简单的文件格式来存储分子定义和力场,即模板LT。LT文件包含与特定分子有关的所有文本(包括坐标,键拓扑,角度,力场参数,约束,组和修复)。 Moltemplate可以复制分子,对其进行自定义,然后用它作为构建更大、更复杂分子的基础。构建后,可以自定义...

元素魔方科研服务 2593

python_django_Pagination

分页查询 当数据量过大时,可能会导致各种各样的问题发生,例如:服务器资源被耗尽,因数据传输量过大而使处理超时,等等。最终都会导致查询无法完成。 解决这个问题的一个策略就是“分页查询”,也就是说不要一次性查询所有的数据,每次只查询一“页“的数据。这样分批次地进行处理,可以呈现出很好的用户体验,对服务器资源的消耗也不大。 打一个比方,有很多很多人要过河,而只有一条船摆渡。若让所有人都上船,肯定会导致...

qq_40794266的博客 494

ChipCamp探索系列 -- 7A. 开源CPU之BOOM的来龙去脉

本文梳理一下Berkeley的乱序超标量CPU项目----Berkeley Out of Order Machine (BOOM),作为探索7系的首篇(7A)。

ChipCamp的博客---https://chipcamp.blog.youkuaiyun.com/ 1558

欧姆龙多PLC串行链接模式的应用

欧姆龙多PLC串行链接模式的应用 一、如何将两台CP1H进行串行PLC连接(PLC串行链接) 主机侧设定 从机侧设定 二、 如何实现编程通信 主机侧的【PC连接模式】为【全部】的时候 ① 主机会把自己的地址从3100开始,按照【链接字】设定的字数个数发送到每个从机的3100开始进行存储。 ② 从机会把自己的地址从31n0开始,按照主机侧参数【链接字】设定的字数个数发送到主机的31n0开始进行存储。 注:(n为从机的地址号,若从机号不连续,则该编号的地址将不被定义..

u014202847的博客 3081

django分页(Paginator)

  有的时候我们会在页面中展示大量数据,全部都放在一页可能会降低用户体验,Django提供了一个Paginator类来帮助我们管理分页数据。 起步 介绍分页器对象的一些属性和方法 1. 引入该类及相关异常模块: from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage Paginator:...

大白成长记 1万+

PLC凸轮开关指令编程应用——控制算法

凸轮开关指令的作用是在PLC程序中根据凸轮开关(Cam Switch)的状态执行不同的操作。凸轮开关通常是机械式的开关装置,它的位置会随着机械运动的变化而改变。凸轮开关的状态可以用来检测机器的位置、角度或其他相关信息,从而触发相应的控制动作。总结起来,凸轮开关指令是PLC编程中常用的一种控制算法,通过检测凸轮开关的状态来触发相应的操作。本文将介绍凸轮开关指令的应用和相应的控制算法,并提供相关的源代码示例。在这个示例中,凸轮开关状态的值代表不同的位置,根据凸轮开关状态的不同,执行相应的动作。

LiJavascript的博客 1034

Django 分页功能

Django 分页功能比较强大,这边是结合官网的内容写的可以参考 https://docs.djangoproject.com/en/1.9/topics/pagination/ >>> from django.core.paginator import Paginator >>> objects = ['john', 'p

krzover的博客 977

NVIDIA Omniverse 技术浅析(三):NVIDIA RTX 技术

NVIDIA RTX 技术是 NVIDIA 推出的革命性图形渲染技术,旨在通过硬件加速和软件优化,实现高质量的实时图形渲染。RTX 技术在 NVIDIA Omniverse 平台中扮演着至关重要的角色,为其提供了强大的渲染能力。

m0_75253143的博客 351

odom反算成经纬度

这个转换系统能够将局部坐标(相对于原点的X, Y, Z坐标)转换回全球坐标系统。将局部里程计数据反算成经纬度坐标的过程涉及几个关键步骤,主要是将相对于某个局部参考点的坐标(例如在机器人、无人车或无人机的导航系统中使用的坐标)转换回全球GPS坐标系统(WGS-84经纬度)。为了能够将局部里程计数据转换为经纬度,首先需要知道局部坐标系统的原点(即参考点)在全球坐标系统中的位置。对于从里程计获得的每个局部坐标点,使用步骤2中设置的坐标转换系统将其转换为经纬度。使用转换模型将局部坐标转换为全球坐标。

如果想成为中心,那么就到中心去吧。 650

Django-ORM缓存机制,QuerySet对象,惰性查询机制详解,以及分页查询,缓存机制的坑!!

Django-ORM缓存机制,惰性查询机制详解,以及分页查询,QuerySet对象,过滤器,缓存机制的坑!!

qq_34511096的博客 877

(02)Cartographer源码无死角解析-(81) ROS栅格地图→服务接收子图、cairo图像绘详解、OccupancyGrid地图发布

疑问1疑问1src/cartographer/cartographer/mapping/2d/probability_grid.cc 文件中的 ProbabilityGrid::DrawToSubmapTexture 函数的 proto::SubmapQuery::Response::SubmapTexture* 示例对象 texture 中texture->mutable_slice_pose() 的含义具体是什么。

江南才尽江南山,年少无知年少狂! 1927

Django框架学习六---分页机制

编辑blog下的views.py文件,为了导入分页器类并且调整post_list视图 def post_list(request): # posts = Post.published.all() # return render(request, 'blog/post/list.html', {'posts': posts}) object_list = Post.publi...

dj_ing的博客 209

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

IC秋招LDO电路分析:从环路稳定性到PSRR与噪声的笔试核心考点

低压差线性稳压器(LDO)是模拟IC设计的基础模块,其核心在于通过误差放大器与功率管构成的反馈环路实现稳定电压输出。环路零极点分布决定了系统的相位裕度与稳定性,而电源抑制比(PSRR)和噪声性能则直接影响供电质量。在射频、音频及高精度ADC等对电源噪声敏感的场景中,LDO凭借低纹波优势成为首选。IC秋招笔试常围绕LDO的环路分析、PSRR优化、噪声计算及与DC-DC的选型对比展开,考察对跨导放大器、频率补偿等基础概念的工程理解。

weixin_30247781的博客 452

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【Python Web 框架】Django022---drf ---过滤、分页源码分析、继承APIview实现分页、JWT的认证机制

代码】【PythonWeb框架】Django022---drf---过滤、分页源码分析、继承APIview实现分页、JWT的认证机制。

初遇我ㄖ寸の热情呢? 245

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Django分页

分页:官方文档传送门Paginator 类对象的属性:num_pages: 返回分页之后的总页数page_range: 返回分页后页码的列表Paginator 类对象的方法:page(self, number): 返回第 number 页的 Page 类实例对象Page 类对象的属性:number: 返回当前页的页码object_list: 返回包含当前页的数据的查询集paginato...

didenglei8217的博客 413

Django之自带分页模块Pagination

Django提供了一些类来帮助您管理分页数据 - 即分布在多个页面上的数据,使用“上一页/下一页”链接。这些课程都在django/core/paginator.py。 Example¶ 给Paginator对象的列表,再加上你想有每个页面上的项目数,和它给你访问的每个页面的项目方法: >>> from django.core.paginator impor...

weixin_30949361的博客 235

10 django 分页功能的实现

1 Paginator Paginator 类的作用是将我们需要分页的数据分割成若干份。当我们实现化一个 Paginator 类的实例时,需要给 Paginator 传入两个参数。第一个参数是数据源,可以是一个列表、元组、以及查询结果集 QuerySet。第二个参数需要传入一个整数,表示每页显示数据条数。具体写法如下: book_list = [] for x in range(1, 26): # 一共 25 本书 book_list.append('Book ' + str(x)) # 将数据按

weixin_45451375的博客 254

19:django 分页

分页是网站中比较常见的应用,django提供了一些类帮助管理分页的数据,这些类都位于django.core.paginator.py文件里面 分页类 构造函数 classPaginator(object_list,per_page,orphans=0,allow_empty_first_page=True) 必需参数: object_list:具有count()或者__...

dianliao7817的博客 147

Django 利用 Pagination 分页

Django自身提供了一些类来实现管理分页,数据被分在不同的页面中,并带有“上一页/下一页”标签。这个类叫做Pagination,其定义位于 django/core/paginator.py 中。 一. Paginator类的解释 class Paginator(object): def __init__(self, object_list, per_pag...

dengqi6607的博客 127

django 分页 Paginator类

1.django分页-Paginator类 kevin@kevin:~/huasu_group/trunk/diandingding110/units/adms$ python manage.py shell Python 2.7.10 (default, Oct 14 2015, 16:09:02) [GCC 5.2.1 20151010] on linux2 Type ...

187

django分页

Django 分页 分页是指在 web 页面有大量数据需要显示时,当一页的内容太多不利于阅读和不利于数据提取的情况 下,可以分为多页进行显示。 Django 提供了一些类来帮助你管理分页的数据 — 也就是说,数据被分在不同页面中,并带有 “ 上一页 / 下 一页 ” 链接。 这些类位于 django/core/paginator.py 中。 Paginator 对象 from django.c...

python_god的博客 222

警醒:django框架MySql limit分页查询机制和多表查询时遇到的坑(使用limit实现真分页和左连接查询)

1、django的models中对象实现limit真分页(网上的paginator都是假分页,数据量大的时候肯定是不行的) models定义:JobDept是部门表,TUser是用户表 class JobDept(models.Model): dept_id = models.IntegerField(primary_key=True) dept_name = models....

nosprings的博客 8005

Django:使用Paginator进行自动分页

翻译自官方文档分页机制Django 1.0 中分页机制和先前已经大不相同。它提供了一些类协助你把数据分页。 对应的文件为 django/core/paginator.py举例¶类Paginator,带两个构造参数,一个就是数据的集合,另一个表示每页放几个数据。[python] view plain copy>>> from django.core.paginator import Paginato

小松的博客 784
上一篇: 在Django数据库中添加具有初始值的字段
下一篇: 在django中使用logging模块
Java2King
博客等级 码龄18年 221粉丝 77原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值