Django实现基本的页面分页

1.视图views.py

from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage

def index(request):
    all = Blog.objects.all()               # 获取全部数据的对象

    paginator = Paginator(all,2)            # 创建对象,将all分成每页2条数据
    if request.method == 'GET':                       # 前端get传参
        page = request.GET.get('page')                  # 获取前端传进来的页数page
        try:
            info = paginator.page(page)                  # 获取所传页数的数据对象
        except PageNotAnInteger:        # 如果请求的页数不是整数, 返回第1页
            info = paginator.page(1)
        except EmptyPage:            # 如果请求的页数不在合法的页数范围内,返回结果的末尾页
            info = paginator.page(paginator.num_pages)

        return render(request,'blog/index.html',{'info':info})          #将获取的页的对象传到前端页面

 

2.模板template代码

<div>
    {# 如果有上一页 #}
    {% if info.has_previous %}
    {# 点击跳转到上一页,以get方式传递上一页的页码数到后端 #}
    <a class='active' href="http://139.198.16.166:8000/index/?page={{ info.previous_page_number }}">上一页</a>
    {% endif %}

    {# 显示当前页数#}
    <span class="current">第{{ info.number }}页 | 共{{ info.paginator.num_pages }}页</span>

    {# 如果有下一页 #}
    {% if info.has_next %}
    {# 同上 #}
    <a class='active' href="http://139.198.16.166:8000/index/?page={{ info.next_page_number }}">下一页</a>
    {% endif %}
</div>

 

posted @ 2021-05-07 14:10  映辉  阅读(151)  评论(0)    收藏  举报