Django框架一站式保姆级教程(五)

Models–模型(中)

1.分页

Django 提供了高级和低级的方法来帮助管理分页数据。

1.1 Pageinator类

Paginator类位于django.core.paginator模块

from django.core.paginator import Paginator

Paginator类的构造函数结构如下:

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

其中:

● Paginator.object_list
必要的。一个列表、元组、QuerySet 或其他具有 count() 或 len()方法的可切片对象
● Paginator.per_page
必要的。一个页面中包含的最大项目数,不包括 orphans
●Paginator.orphans
可选的。当不希望最后一页的项目数量很少时,使用这个选项。如果最后一页的项目数量通常小于或等于
orphans,那么这些项目将被添加到前一页(成为最后一页),而不是让这些项目单独留在一页上。例如,如果有 23
个条目,per_page=10,orphans=3,则会有两页;第一页有 10 个条目,第二页(也是最后一页)有 13
个条目。orphans 默认为 0,这意味着页面永远不会合并,最后一页可能只有一个项目。
●Paginator.allow_empty_first_page 可选的。是否允许第一页为空。 如果 False 并且object_list 是空的,则会出现 EmptyPage 错误。

1.1.1属性

• num_pages
num_pages属性用于获取总页数,其语法结构是:

Paginator.num_pages

● page_range
page_range属性将返回以 1 为基础的页码范围迭代器,例如产生 [1,2,3,4],其语法结构是:

Paginator.page_range
1.1.2 方法

● get_page()
get_page()方法用于返回一个给定的基于 1 索引的 Page 对象,同时处理超出范围和无效的页码。
如果页数不是数字,它返回第一页。如果页码为负数或大于页数,则返回最后一页。其语法结构是:

Page Paginator.get_page(number)

● page()
page()方法用于返回一个包含指定页码的QuerySet对象,该对象包含了指定页码的数据,其语法结构是:

Paginator.page(number)

如果需要获取指定页码的数据并且需要分页信息,使用get_page()方法;如果只需要获取指定页码的数据,使用page()方法

1.2 Page 类

1.2.1 属性

● object_list
object_list属性用于返回当前页中的所有对象,其语法结构为:

Page.object_list

● number
number属性将返回当前页的页码,其语法结构为:

Page.number

● paginator
paginator属性将返回与该页相关联的Paginator对象,其语法结构为:

Page.paginator
1.2.2 方法

● has_next()
has_next()方法在如果有下一页时,返回 True,其语法结构是:

Page.has_next()

● has_previous()
has_previous()方法在如果有上一页时,返回 True,其语法结构是:

Page.has_previous()

● has_other_pages()
has_other_pages()方法将在如果有下一页或上一页时,返回 True,其语法结构是:

Page.has_other_pages()

● next_page_number()
next_page_number()方法将返回下一页的页码。如果下一页不存在,则引发 InvalidPage。其语法结构是:

int Page.next_page_number()

● previous_page_number()
previous_page_number()方法将返回上一页的页码。如果上一页不存在,则引发 InvalidPage。共语法结构是:

int Page.previous_page_number()

● start_index()
返回页面上第一个对象,相对于分页器列表中所有对象的基于 1 的索引。例如,当对一个有 5 个对象的列表进行分页时,每页有 2 个对象,第二页的 start_index() 方法将返回 3。其语法结构是:

Page.start_index()

● end_index()
返回页面上最后一个对象相对于分页器列表中所有对象的基于 1 的索引。例如,当对一个有 5 个对象的列表进行分页时,每页有

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值