分页
在Django
中实现分页功能非常简单。因为Django
已经内置了两个处理分类的类。分别是Paginator
和Page
。Paginator
用来管理整个分类的一些属性,Page
用来管理当前这个分页的一些属性。通过这两个类,就可以轻松的实现分页效果。以下对这两个类进行讲解。
Paginator
类:
Paginator
是用来控制整个分页的逻辑的。比如总共有多少页,页码区间等等。都可以从他上面来获取。
创建Paginator对象:
class Paginator(object_list, per_page, orphans=0, allow_empty_first_page=True)
,其中的参数解释如下:
object_list
:列表,元组,QuerySet
或者是任何可以做切片操作的对象。会将这个里面的对象进行分页。per_page
:分页中,一页展示多少条数据。orphans
:用来控制最后一页元素的个人如果少于orphans
指定的个数的时候,就会将多余的添加到上一页中。allow_empty_first_page
:如果object_list
没有任何数据,并且这个参数设置为True
,那么就会抛出EmptyPage
异常。
常用属性和方法:
Paginator.page(number)
:获取number
这页的Page
对象。count
:传进来的object_list
总共的数量。num_pages
:总共的页数。page_range
:页码的列表。比如[1,2,3,4]
。
Page
类:
常用属性和方法:
has_next()
:是否还有下一页。has_previous()
:是否还有上一页。next_page_number()
:下一页的页码。previous_page_number()
:上一页的页码。object_list
:在当前这页上的对象列表。number
:当前的页码。paginator
:获取Paginator
对象。