一、Paginator对象
(1)创建对象
1)格式:Pageinator(列表,整数)
2)返回值:返回的分页对象
(2)属性
1)count:对象总数
2)num_pages:页面总数
3)page_range:页码列表,页码从1开始
(3)方法
1)page(num):获得page对象,如果提供的页码不存在会抛出”InvalidPage”异常
(4)异常
1)InvaildPage:当向Page()传递的是一个无效的页码时抛出的异常
2)PageNotAnInteger:当向Page()传递的不是一个整数时
3)EmptyPage:当向Page()传递一个有效值,但是该页面上没有数据时抛出
二、Page对象
(1)创建对象
Paginator对象的page()方法返回得到Page对象
不需要手动创建
(2)属性
1)object_list:当前页上所有的数据(对象)列表
2)number:当前页的页码值
3)Paginator:当前page对象关联的paginator对象
(3)方法
1)has_nest():判断是否有下一页,如果有返回Ture
2)has_previous():判断是否有上一页,如果有返回Ture
3)has_other_pages():判断是否有上一页或下一页,如果有返回True
4)next_page_number():返回下一页的页码,如果下一页不存在抛出InvaildPage异常
5)Previous_page_number():返回上一页的页码,如果上一页不存在抛出InvaildPage异常
6)len():返回当前页的数据(对象)个数
三、Pageinator对象与Page对象的关系
四、实现
编写urls.py文件
url(r'^studentpage/(\d+)/$', views.studentpage),
编写views.py文件
from .models import Students
from django.core.paginator import Paginator
def studentpage(request,pageid):
#所有学生的列表
allList = Students.objects.all()
paginator = Paginator(allList,6)
page = paginator.page(pageid)
return render(request,'myApp/studentpage.html',{"students":page})
创建一个studentspage.html文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>学生分页显示</title>
</head>
<body>
<ul>
{% for stu in students %}
<li>
{{stu.sname}}--{{stu.sgrade}}
</li>
{% endfor %}
</ul>
<ul>
{% for index in students.paginator.page_range %}
{% if index == students.number %} <!--若是当前页则无法点击-->
<li>
{{index}}
</li>
{% else %}
<li>
<a href="/studentpage/{{index}}">{{index}}</a>
</li>
{% endif %}
{% endfor %}
</ul>
</body>
</html>