0
点赞
收藏
分享

微信扫一扫

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 下一页

 



举报

相关推荐

0 条评论