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

Django模板中Bootstrap网格布局对齐异常问题求助

Django+Bootstrap网格布局错位问题

我使用Django框架在模板中循环展示数据库内的图片,尝试用Bootstrap网格实现整洁布局,但布局异常,底部图片出现对齐错位问题。

布局错位截图

模板HTML代码

<div class="container">
    <div class="row">
        <div class="col-sm-12 col-md-3 col-lg-2">
            <div class="card-filter" style="width: 10rem;">
                <div class="card-header">
                    Pattern Type
                </div>
                <ul class="list-group list-group-flush">
                    {% for pattern in categories %}
                    <li class="list-group-item">{{pattern.name}}</li>
                    {% endfor %}
                </ul>
            </div>
        </div>
        {% for photo in photos %}
        <div class="col-sm-12 col-md-5 col-ld-5">
            <div class="card" style="width: 25rem;">
                <img class="card-img-top" src="{{photo.image.url}}" alt="Card image cap">
                <div class="card-body">
                    <p class="card-text">Symbol: GBPUSD<br>Pattern: ButterFly Bullish</p>
                    <a href="{% url 'photo' photo.id %}" class="btn btn-dark">View Pattern</a>
                </div>
            </div>
        </div>
        {% endfor %}
    </div>
</div>

views.py代码

def home(request):
    categories = Category.objects.all()
    photos = Photo.objects.all()

    context = {'categories': categories,
               'photos': photos}

    return render(request, "main/home.html", context)

问题原因及修复方案

1. 列类拼写错误

代码中col-ld-5是拼写错误,正确应为col-lg-5,错误的类名会导致大屏幕下列宽规则失效,破坏布局逻辑。

2. 网格列宽总和超出限制

Bootstrap网格系统基于12列布局,左侧侧边栏占col-md-3,右侧每个卡片列用col-md-5的话,3+5+5=13,超出了12列的上限,这是布局错位的核心原因。

3. 卡片高度不一致

不同卡片的图片或内容高度不同,会导致网格自动换行时出现错位。

修复后的HTML代码

<div class="container">
    <div class="row">
        <!-- 左侧过滤器区域 -->
        <div class="col-sm-12 col-md-3 col-lg-2">
            <div class="card-filter" style="width: 10rem;">
                <div class="card-header">
                    Pattern Type
                </div>
                <ul class="list-group list-group-flush">
                    {% for pattern in categories %}
                    <li class="list-group-item">{{pattern.name}}</li>
                    {% endfor %}
                </ul>
            </div>
        </div>
        <!-- 右侧卡片容器,单独占剩余列宽 -->
        <div class="col-sm-12 col-md-9 col-lg-10">
            <div class="row">
                {% for photo in photos %}
                <div class="col-sm-12 col-md-6 col-lg-4 mb-4">
                    <div class="card h-100"> <!-- h-100强制所有卡片高度一致 -->
                        <img class="card-img-top" src="{{photo.image.url}}" alt="Card image cap">
                        <div class="card-body">
                            <p class="card-text">Symbol: GBPUSD<br>Pattern: ButterFly Bullish</p>
                            <a href="{% url 'photo' photo.id %}" class="btn btn-dark">View Pattern</a>
                        </div>
                    </div>
                </div>
                {% endfor %}
            </div>
        </div>
    </div>
</div>

修复说明:

  • 将右侧卡片统一放入一个占剩余宽度的列中,内部嵌套row循环卡片,避免列宽总和超标
  • 用col-md-6(中等屏幕每行2张)、col-lg-4(大屏幕每行3张)设置合理的列宽
  • 添加h-100类确保所有卡片高度一致,mb-4给卡片添加底部间距提升美观度

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 16:50:33