一、分页的定义

二、Paginator类和Paginator对象
1、Paginator对象

2、Paginator属性

3、Paginator方法

4、Paginator异常

三、Page对象
1、Page对象的定义和属性

2、Page对象的方法

四、代码实现
1、模板templates中的test_page.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>分页</title>
</head>
<body>
{# 要实现的效果#}
{# 上一页 1 2 3 下一页#}
{#使用for循环拿到当前页面上的所有数据对象(for循环中的c_page相当于c_page.object_list)#}
{% for p in c_page %}
<p>
{{ p }}
</p>
{% endfor %}
{# 0、实现上一页 #}
{# 若有上一页,则拿到上一页的页码超链接 #}
{% if c_page.has_previous %}
<a href="/test_page?page={{ c_page.previous_page_number }}">上一页</a>
{# 若没有上一页,则显示为普通的字符即可 #}
{% else %}
上一页
{% endif %}
{# 1、实现中间部分 #}
{#使用循环拿到每个页面#}
{% for p_num in paginator.page_range %}
{#若是当前页,则显示为普通的一个数字#}
{% if p_num == c_page_number %}
{{ p_num }}
{# 若不是当前页面,则显示为一个超链接 #}
{% else %}
<a href="/test_page?page={{ p_num }}">{{ p_num }}</a>
{% endif %}
{% endfor %}
{# 2、实现下一页 #}
{# 若有下一页,则拿到下一页的页码超链接 #}
{% if c_page.has_next %}
<a href="/test_page?page={{ c_page.next_page_number }}">下一页</a>
{# 若没有下一页,则显示为普通的字符即可 #}
{% else %}
下一页
{% endif %}
</body>
</html>
2、视图函数views.py中
def test_page(request):
page_num = request.GET.get('page',1)
all_data = ['a','b','c','d','e']
paginator = Paginator(all_data, 2)
c_page = paginator.page(int(page_num))
return render(request,'test_page.html',locals())