普通分页
定义:
Django 提供Paginator类可以方便的实现分页功能
Paginator类位于django.core.paginator
Paginator对象
对象的构造方法
paginator = Paginator(object_list,per_page)
参数
object_list 需要分页的对象
per_page 每页数据个数
返回值
Paginator的对象
paginator属性
-count 需要分页的对象总数
-num_pages 分页后的页面总数
-page_range 从1开始的range对象,用于记录当前码数
-per_page 每页数据的个数
paginator方法
paginator对象.page(number)
-参数number为页码信息(从1开始)
-返回当前值number也对应的页信息
-如果提供的页码不存在,抛出InvalidPage异常
paginator异常exception
InvalidPage异常包括
PageNotAnInteger 当向page()传入一个不是整数的值时抛出
EmptyPage 当向page()传入一个有效值,但是那个页面上没有任何对象时抛出
page对象
创建对象
page = paginator.page(页码)
page对象属性
object_list 当前页上所有数据对象的列表
number 当前页的序号,从1开始
paginator 当前page对象相关的paginator对象
has_next() 如果有下一页返回True
has_previous() 如果有上一夜返回True
has_other_pages() 如果有上一页或下一页返回True
next_page_number() 返回下一页的页码,如果下一页不存在,抛出InvalidPage异常
previous_page_number() 返回上一页的页码,如果上一页不存在,抛出InvalidPage异常
案例:
from django.core.paginator import Paginator,Page
# 普通分页
def test(request):
page_num = request.GET.get('page',1)
# 需要分页的数据
all_data = ['a','b','c','d','e']
# 初始化paginator
paginator = Paginator(all_data,2)
# 初始化具体页码的对象
c_page = paginator.page(int(page_num))
return render(request,'test.html',locals())