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 个对象的列表进行分页时,每页有

最低0.47元/天 解锁文章
905

被折叠的 条评论
为什么被折叠?



