Django在访问数据库后会将数据显示在界面上!但是当数据过多的时候我们就需要将其分页显示,如下图效果
导入需要django分页需要的包
from django.core.paginator import *
创建视图,并查询数据库
def herolist(request,index=1):
list = HeroInfo.objects.all()
paginator = Paginator(list,5)
page = paginator.page(index)
currentPage = int(index)
if currentPage<3:
pageRange = range(1, 6)
elif currentPage>paginator.num_pages-3:
pageRange = range(paginator.num_pages-4, paginator.num_pages+1)
else:
pageRange = range(currentPage-2,currentPage+3)
context = {'page': page, 'pageRange': pageRange}
return render(request, 'booktest/herolist.html', context)
创建模板来展示
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<ul>
{% for hero in page%}
<li>{{hero.hname}}</li>
{% endfor %}
</ul>
{%for index in pageRange %}
<a href="/herolist/{{index}}">{{index}}</a>
{% endfor%}
<hr>
</body>
</html>