Django做一个简单的博客系统(8)----文章分页

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_42567323/article/details/102723405
前言

    在之前的文章中已经实现了一个比较简单的分页功能: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">
                    &laquo; 首页
                </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"
                >
                    尾页 &raquo;
                </a>
            {% endif %}
        </span>
    </div>
</div>

    这样就完成了一个基本的分页功能了.

写在最后

    本文是个人的一些学习笔记,如有侵权,请及时联系我进行删除,谢谢大家.

猜你喜欢

转载自blog.csdn.net/weixin_42567323/article/details/102723405
今日推荐