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

如何让Django模板中表格列宽一致并统一搜索按钮尺寸?

Django表格列宽统一与搜索按钮样式修复

我在开发Django项目时,使用了以下模板文件,当前页面存在两个问题:

  1. 表格列宽随内容长度变化,导致布局杂乱
  2. 搜索框的绿色按钮与文本框尺寸不匹配,显示不协调

当前效果截图:当前效果
理想效果截图:理想效果


一、实现表格列宽统一

要让所有表格列宽度一致,需修改template.html中的表格样式,添加固定布局规则并处理内容溢出:

修改后的template.html关键代码:

<div class="card">
  <div class="card-body p-0">
    <!-- 强制表格固定布局,优先使用设置的宽度 -->
    <table class="table" style="width: 100%; table-layout: fixed;">
      <tbody>
        <tr>
          {% for field in fields %}
            {% if field != "rehabilitation" and field != "operation_type" and field != "subvention" and field != "history" %}
              {% if field|is_sortable == False %}
                <!-- 固定列宽,添加内容溢出截断规则 -->
                <th bgcolor="gray" style="color: white; width: 5%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;">{{ field }}</th>
              {% elif field != "related_projects" and field != "history" %}
                <th bgcolor="gray" style="color: white; width: 5%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;">
                  <a href="?order_by={{ field }}" style="color: white">{{ field }}</a>
                  {% include 'projects/functionalities/filter.html' %}
                </th>
              {% endif %}
            {% endif %}
          {% endfor %}
        </tr>
        <tr>
          <!-- 为每个单元格设置统一宽度和溢出处理 -->
          {% for field in fields %}
            {% if field != "rehabilitation" and field != "operation_type" and field != "subvention" and field != "history" %}
              {% if field != "related_projects" and field != "history" %}
                <td style="width: 5%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;">
                  {% if forloop.counter0 == 0 %}hey{% elif forloop.counter0 == 1 %}helllooooooo{% elif forloop.counter0 == 2 %}hello how are you ?{% elif forloop.counter0 == 3 %}yo{% elif forloop.counter0 == 4 %}teeeest{% elif forloop.counter0 == 5 %}aaa{% elif forloop.counter0 == 6 %}bbb{% elif forloop.counter0 == 7 %}cccccccccccccccccc{% elif forloop.counter0 == 8 %}wow{% elif forloop.counter0 == 9 %}testestestest{% elif forloop.counter0 == 10 %}test test test test{% elif forloop.counter0 == 11 %}i'm testing this{% elif forloop.counter0 == 12 %}whyyy does this don't work{% elif forloop.counter0 == 13 %}hello{% elif forloop.counter0 == 14 %}hey{% elif forloop.counter0 == 15 %}hey{% endif %}
                </td>
              {% endif %}
            {% endif %}
          {% endfor %}
        </tr>
      </tbody>
    </table>
  </div>
</div>

核心调整说明:

  • table-layout: fixed:强制表格按照设置的宽度渲染,忽略内容长度影响
  • overflow: hidden + text-overflow: ellipsis + white-space: nowrap:内容过长时自动截断并显示省略号,避免撑大列宽

二、修复搜索按钮与文本框尺寸匹配

修改filter.html的表单结构,调整按钮样式以匹配文本框尺寸:

修改后的filter.html代码:

<!-- 移除垂直布局,减少表单垂直占用空间 -->
<form class="d-flex bd-highlight mb-2" method="GET" action="{% url 'project-list' %}">
  {% csrf_token %}
  <div class="input-group">
    <input type="text" class="form-control" placeholder="Search" name="search">
    <!-- 使用Bootstrap规范的input-group-append替代旧布局 -->
    <div class="input-group-append">
      <!-- 调整内边距让按钮与文本框高度对齐,添加搜索标识 -->
      <button class="btn btn-success" type="submit" style="padding: 0 1rem;">🔍</button>
    </div>
  </div>
</form>

核心调整说明:

  • 替换input-group-btn为input-group-append,适配Bootstrap布局规范
  • 调整按钮内边距,确保与文本框高度完全匹配
  • 添加搜索图标(或文字),避免空按钮显得突兀

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 19:55:19