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

Django分页:用讲座标题而非数字实现侧边栏导航

问题分析与解决方案

你的问题出在嵌套循环逻辑错误,且未正确获取对应页码的讲座对象:

  • 外层遍历页码page_range时,内层循环的lecture_single是当前请求页的讲座列表(每页仅1个,所以每次内层只循环1次),导致每个页码都输出当前页的讲座标题,最终所有链接显示同一个标题。
  • 代码里还误用了未定义的变量lecture,即便修正为lecture_x,核心逻辑错误依然存在。

正确实现代码

你需要通过分页器的get_page()方法,获取对应页码的页面对象,从而拿到该页的讲座标题:

<ul>
  {% for pg in lecture_single.paginator.page_range %}
    {% with target_page=lecture_single.paginator.get_page(pg) %}
      <!-- 因每页仅1个讲座,直接取第一个元素 -->
      <li>
        <a href="?page={{ pg }}" class="btn">{{ target_page.0.title }}</a>
      </li>
    {% endwith %}
  {% endfor %}
</ul>

如果未来可能调整每页显示数量,可使用更严谨的写法:

<ul>
  {% for pg in lecture_single.paginator.page_range %}
    {% with target_page=lecture_single.paginator.get_page(pg) %}
      {% for lecture in target_page %}
        <li>
          <a href="?page={{ pg }}" class="btn">{{ lecture.title }}</a>
        </li>
      {% endfor %}
    {% endwith %}
  {% endfor %}
</ul>

逻辑说明

lecture_single.paginator.get_page(pg)会返回指定页码pg对应的页面对象,该对象包含了该页的所有讲座数据。通过这个方式,就能为每个页码链接匹配到对应的讲座标题,而非重复当前页内容。

内容的提问来源于stack exchange,提问作者Jerome Kambafwile

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 14:10:59