You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django ListView搭配Paginator分页显示文章标题而非页码该怎么修复?

问题原因

你遇到的问题由两个代码错误导致:

  1. 分页循环对象错误:你遍历的all_posts是当前页的文章列表,每个元素都是Post模型实例,渲染时会调用模型的__str__方法输出你设置的返回值(也就是文章标题),自然不会显示页码
  2. 下一页跳转逻辑错误:「Next」按钮的链接参数填成了previous_page_number,点击后会跳转到前一页而非下一页

Django的ListView开启paginate_by参数后,会自动向模板注入两个分页专用的上下文变量:

  • paginator:全局分页器实例,包含总页数、页码范围等全局属性
  • page_obj:当前分页实例,包含当前页码、是否存在上下页等当前页属性

修复方案

直接替换模板中分页部分的代码即可,修复后代码如下:

</div>
<nav aria-label="Page navigation example">
    <ul class="pagination d-flex justify-content-center mt-1">
        {% if page_obj.has_previous  %}
        <li class="page-item ">
            <a class="page-link" href="?page={{ page_obj.previous_page_number }}">Previous</a>
        </li>
        {% endif %}

        {% for page in paginator.page_range %}
            <li class="page-item {% if page == page_obj.number %}active{% endif %}">
                 <a class="page-link" href="?page={{ page }}"><span>{{page}}</span></a>
            </li>
        {% endfor %}
     
        {% if page_obj.has_next %}
             <li class="page-item">
                <a class="page-link" href="?page={{ page_obj.next_page_number }}">Next</a>
            </li>
        {% endif %}
    </ul>
</nav>
</div>
<!-- Pagination-->

代码额外增加了当前页码高亮的逻辑,你可以根据需求调整样式。


内容的提问来源于stack exchange,提问作者El Houssain Sabri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 13:18:05