Django页面分页设置

Django在访问数据库后会将数据显示在界面上!但是当数据过多的时候我们就需要将其分页显示,如下图效果

这里写图片描述

导入需要django分页需要的包

from django.core.paginator import *

创建视图,并查询数据库

#用于分页练习
def herolist(request,index=1):
    # 这个查询指定数据库中所有的数据
    list = HeroInfo.objects.all()
    # 将数据每5个设置为一页
    paginator = Paginator(list,5)
    #得到当前的页面数据
    page = paginator.page(index)

    # 获取当前页面数,这里是传过来的index
    currentPage = int(index)
    # 下面这段逻辑是保证标签始终是5个,所选的标签在中间
    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>

猜你喜欢

转载自blog.csdn.net/jeekmary/article/details/80619220
今日推荐