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

在Django模板中如何设置for循环的起始与结束序号范围?

问题修正方案

1 模板层直接修复(快速适配现有代码)

你代码的报错根源是{% if forloop.counter 15>=30 %}判断语法完全错误,Django模板引擎无法解析该表达式。将该行判断修改为如下内容即可实现15~30项的过滤:

{% if forloop.counter >= 15 and forloop.counter <= 30 %}

修正后的完整模板代码如下:

{% for post in posts %}
  {% if forloop.counter >= 15 and forloop.counter <= 30 %}
    <div style="background-color: #9999; max-width: 100%;" class="card mb-3">
      <div class="row no-gutters">
        <div class="col-md-4">
          <a href="{% url 'post_detail' post.slug %}"><img style="height: 200px; width: 330px;" src="{{ post.mainimage.url }}" class="card-img" alt="..."></a>
        </div>
        <div class="col-md-6" id="ph">
          <div class="card-body">
            <h5 class="card-title">{{ post.title }} , {{ post.xnumber }}</h5>
            <p class="card-text">{{ post.version }}</p>
            <p>{{ post.category }}</p>
            <p class="card-text"><small class="text-muted">{{ post.date_added }}</small></p>
          </div>
        </div>
      </div>
    </div>
  <hr >
  {% endif %}
{% endfor %}

注:原代码中div标签重复定义了style属性,已合并优化

2 更推荐的实现方式(视图层切片,性能更优)

Django模板层不建议做复杂的逻辑判断,你可以直接在视图层对QuerySet做切片处理,提前筛选出15~30项数据,模板不需要额外加判断逻辑,遍历效率更高:

  • 视图层代码修改示例:
# 原查询逻辑,比如你原来的查询是
# posts = Post.objects.all()
# 修改为如下切片,Python切片左闭右开,索引从0开始,[14:30]对应第15项到第30项
posts = Post.objects.all()[14:30]
  • 模板层直接遍历即可,不需要加if判断:
{% for post in posts %}
  <div style="background-color: #9999; max-width: 100%;" class="card mb-3">
    <div class="row no-gutters">
      <div class="col-md-4">
        <a href="{% url 'post_detail' post.slug %}"><img style="height: 200px; width: 330px;" src="{{ post.mainimage.url }}" class="card-img" alt="..."></a>
      </div>
      <div class="col-md-6" id="ph">
        <div class="card-body">
          <h5 class="card-title">{{ post.title }} , {{ post.xnumber }}</h5>
          <p class="card-text">{{ post.version }}</p>
          <p>{{ post.category }}</p>
          <p class="card-text"><small class="text-muted">{{ post.date_added }}</small></p>
        </div>
      </div>
    </div>
  </div>
  <hr >
{% endfor %}

内容的提问来源于stack exchange,提问作者7mood

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 20:54:07