28Django分页
1视图:
all_data = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n'] def test_page(request): paginator = Paginator(all_data,1) #实例化分页类 page_num = request.GET.get('page',1) #获取当前页码 pagedata = paginator.page(page_num) #获取当前页码的数据 pagecount = paginator.num_pages #获取总页数 pagerange = paginator.page_range #获取页码范围 #对页码进行判断 if int(page_num) <1: page_num = 1 if int(page_num) > pagecount: page_num = pagecount #返回页码循环数,在模板里遍历 if int(page_num) <= 5: page_list = pagerange[:10] elif int(page_num) + 5 > pagecount: page_list = pagerange[-10:] else: page_list = pagerange[int(page_num)-5:int(page_num)+4] return render(request,'test_page.html',locals())
2模板:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>分页</title>
</head>
<body>
{% for p in pagedata %}
<p>
{{ p }}
</p>
{% endfor %}
{% if pagedata.has_previous %}
<a href="/test_page?page={{ pagedata.previous_page_number }}">上一页</a>
{% else %}
上一页
{% endif %}
<!--当前页显示页码,非当前页显示a标签-->
{% for p_num in page_list %}
{% if p_num == c_page.number %}
{{ p_num }}
{% else %}
<a href="/test_page?page={{ p_num }}">{{ p_num }}</a>
{% endif %}
{% endfor %}
{% if pagedata.has_next %}
<a href="/test_page?page={{ pagedata.next_page_number }}">下一页</a>
{% else %}
下一页
{% endif %}
</body>
</html>
3路由:
urlpatterns = [ path('test_page',views.test_page), ]
4浏览:
http://127.0.0.1:8000/test_page?page=7
上一页 3 4 5 6 7 8 9 10 11 下一页