Django框架学习六---分页机制

编辑blog下的views.py文件,为了导入分页器类并且调整post_list视图
def post_list(request):
    # posts = Post.published.all()
    # return render(request, 'blog/post/list.html', {'posts': posts})
    object_list = Post.published.all()
    paginator = Paginator(object_list, 3)
    page = request.GET.get('page')
    try:
        posts = paginator.page(page)
    except PageNotAnInteger:
        posts = paginator.page(1)
    except EmptyPage:
        posts = paginator.page(paginator.num_pages)
    return render(request,'blog/post/list.html',{'page': page,'posts': posts})
工作方式:

(1)利用每个页面上显示的对象数量实例化Paginator类
(2)获取表示当前页面号的page get参数
(3)调用Paginator的page方法获取所需页面对象
(4)如果得到的参数不是一个整数,则检索第一个页面;
得到的参数大于最后一个页面数,则检索到最后一个页面
(5)向模板传递页面号以及检索对象

分页模板pagination.html
<div class="pagination">
   <span class="step-links">
       {% if page.has_previous %}
           <a href="? page={{ page.previous_page_number }}">Previous</a>
       {% endif %}
   <span class="current">
       Page{{ page.number }}of{{ page.paginator.num_pages }}.
   </span>
   {% if page.has_next %}
       <a href="?page={{ page.next_page_number }}">Next</a>
   {% endif %}
   </span>
</div>

分页模板接收到一个page对象,一渲染上一个和下一个链接,并显示当前页和总页数
另外还需在list.html中添加

{% include "pagination.html" with page=posts %}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值