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

Django模板用forloop计数器实现Bootstrap4自定义网格布局排版出错如何解决

问题根因

  • 标签嵌套逻辑错误:你定义的外层包裹<div>放在了if分支内开启,却在else分支内闭合,导致DOM结构完全错乱,浏览器无法正确识别网格层级。
  • 网格结构逻辑错误:你把每一篇文章都单独套了col-lg-4类,而实际上小体积的资讯条目应该堆叠在同一列内,不需要每一条都开新的网格列,超出12列的元素会自动换行,直接导致排版错乱。
  • 特色文章布局逻辑错误:如果你的设计是首篇为大尺寸特色文章,剩下的小文章分两列排布,那你不应该把所有文章都放在同一个循环内生成列容器,应该先单独渲染首篇特色文章的列,再把剩下的文章分组放到另外两个列容器内。

修正后代码示例

<!-- 外层行容器 放在循环外部 -->
<div class="row">
  <!-- 第一列:首篇特色文章 -->
  <div class="col-lg-4 col-md-12 mb-4 mb-lg-0">
    {% with healtharticles|first as featured_article %}
    <div>
      <!-- 特色图 -->
      <div class="bg-image hover-overlay shadow-1-strong ripple rounded-5 mb-4" data-mdb-ripple-color="light">
        <img src="https://mdbootstrap.com/img/new/fluid/city/113.jpg" class="img-fluid" />
        <a href="#!">
          <div class="mask" style="background-color: rgba(251, 251, 251, 0.15);"></div>
        </a>
      </div>

      <!-- 文章元数据 -->
      <div class="row mb-3">
        <div class="col-6">
          <a href="" class="text-info">
            <i class="fas fa-plane"></i>
            Travels
          </a>
        </div>
        <div class="col-6 text-end">
          <u> 15.07.2020</u>
        </div>
      </div>

      <!-- 文章标题和描述 -->
      <a href="" class="text-dark">
        <h5>This is title of the news</h5>
        <p>
          Lorem ipsum dolor sit amet consectetur adipisicing elit. Odit, iste aliquid. Sed
          id nihil magni, sint vero provident esse numquam perferendis ducimus dicta
          adipisci iusto nam temporibus modi animi laboriosam?
        </p>
      </a>
    </div>
    {% endwith %}
  </div>

  <!-- 第二列:第2、4、6...篇小文章 -->
  <div class="col-lg-4 col-md-12 mb-4 mb-lg-0">
    {% for article in healtharticles|slice:"1::2" %}
    <hr />
    <!-- 资讯条目 -->
    <a href="" class="text-dark">
      <div class="row mb-4 border-bottom pb-2">
        <div class="col-3">
          <img src="https://mdbootstrap.com/img/new/standard/city/041.jpg"
               class="img-fluid shadow-1-strong rounded" alt="" />
        </div>
        <div class="col-9">
          <p class="mb-2"><strong>Lorem ipsum dolor sit amet</strong></p>
          <p>
            <u> 15.07.2020</u>
          </p>
        </div>
      </div>
    </a>
    {% endfor %}
  </div>

  <!-- 第三列:第3、5、7...篇小文章 -->
  <div class="col-lg-4 col-md-12 mb-4 mb-lg-0">
    {% for article in healtharticles|slice:"2::2" %}
    <hr />
    <!-- 资讯条目 -->
    <a href="" class="text-dark">
      <div class="row mb-4 border-bottom pb-2">
        <div class="col-3">
          <img src="https://mdbootstrap.com/img/new/standard/city/041.jpg"
               class="img-fluid shadow-1-strong rounded" alt="" />
        </div>
        <div class="col-9">
          <p class="mb-2"><strong>Lorem ipsum dolor sit amet</strong></p>
          <p>
            <u> 15.07.2020</u>
          </p>
        </div>
      </div>
    </a>
    {% endfor %}
  </div>
</div>

调整说明

  • 把三个col-lg-4列容器提到循环外,避免每篇文章生成多余的列容器
  • 单独提取首篇文章作为特色内容渲染
  • 用切片把剩下的文章分成两组,分别填充到后两列中实现堆叠效果
  • 修正了标签闭合错误,保证DOM结构完整合规

内容的提问来源于stack exchange,提问作者Maciej Urmański

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:57:03