版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
前言
在之前的文章中已经实现了一个比较简单的分页功能:python Django学习(12)——分页,我们可以自己写一个分页的类,也可以调用Django自带的分页功能.
感谢大神的教程:Django搭建个人博客.
一.分页
Django已经为我们准备好了一个现成的分页模块了:Paginator.
这里是一个基本的Paginator教程.
接下来就把它用到我们的项目中:
1.修改视图函数
修改article中的views函数:
def article_list(request):
# articles = ArticlePost.objects.all() # 获取ArticlePost中的所有数据
# context = {'articles':articles}
article_list = ArticlePost.objects.all()
# 每页显示4篇文章
paginator = Paginator(article_list,1)
page = request.GET.get('page')
articles = paginator.get_page(page)
context = {'articles':articles}
return render(request,'article/list.html',context)
注:这里返回的不再是所有文章的集合,而是对应页码的部分文章的对象,并且这个对象还包含了分页的方法。
2.修改模板
改写templates/article/list.html模板,在末尾添加分页信息:
<!-- 页码导航 -->
<div class="pagination row">
<div class="m-auto">
<span class="step-links">
<!-- 如果不是第一页,则显示上翻按钮 -->
{% if articles.has_previous %}
<a href="?page=1" class="btn btn-success">
« 首页
</a>
<span>...</span>
<a href="?page={{ articles.previous_page_number }}"
class="btn btn-secondary"
>
{{ articles.previous_page_number }}
</a>
{% endif %}
<!-- 当前页面 -->
<span class="current btn btn-danger btn-lg">
{{ articles.number }}
</span>
<!-- 如果不是最末页,则显示下翻按钮 -->
{% if articles.has_next %}
<a href="?page={{ articles.next_page_number }}"
class="btn btn-secondary"
>
{{ articles.next_page_number }}
</a>
<span>...</span>
<a href="?page={{ articles.paginator.num_pages }}"
class="btn btn-success"
>
尾页 »
</a>
{% endif %}
</span>
</div>
</div>
这样就完成了一个基本的分页功能了.
写在最后
本文是个人的一些学习笔记,如有侵权,请及时联系我进行删除,谢谢大家.