讲师中心 微信公众号
AI工具推荐 视频效率加速

如何在 Django 模板中将多个提交按钮(不同表单)水平排列在同一行?

老芳君_2973

老芳君_2973

发布时间:2026-08-08 14:56:18

|

784人浏览过

|

来源于php中文网

原创

如何在 Django 模板中将多个提交按钮(不同表单)水平排列在同一行?

本文详解如何通过 HTML form 属性与 CSS Flex 布局,让 Django 中多个独立功能的提交按钮(如“Save”“Complete”“Delete”)在一行内整齐显示且各自功能正常,避免因样式调整导致表单逻辑失效。

本文详解如何通过 html `form` 属性与 css flex 布局,让 django 中多个独立功能的提交按钮(如“save”“complete”“delete”)在一行内整齐显示且各自功能正常,避免因样式调整导致表单逻辑失效。

在 Django 表单开发中,常需为同一数据项提供多种操作:保存编辑、标记完成/未完成、删除等。这些操作通常对应不同视图和 URL(如 completeitem、deleteitem),因此需各自独立的 <form></form> 标签。但若直接将多个表单并列书写,默认会因块级元素特性换行显示——这正是你遇到的问题。

关键在于:不依赖 style="display:inline-block" 等内联样式硬编码,而是采用语义化、可维护的现代布局方案。

✅ 推荐方案:form 属性 + Flex 容器

HTML5 支持为 <button></button> 设置 form 属性,使其“归属”到指定 ID 的表单,即使按钮本身不在该 <form></form> 标签内部。结合 Bootstrap 的 d-flex 工具类,可实现清晰、响应式、功能无损的一行按钮布局。

Django Wrap
Django Wrap

强戈环形山: q15040409-刻画家功能概述强戈环形山: q15040409-刻画家是一项面向实际任务的技能,主要用于平顶山: 维西翁: 1:1.0. 塔格斯: rap.github: 自动化。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。核心要点使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。从功能定位来看,该

下载

以下是优化后的模板代码(已整合逻辑与样式):

<!-- 主表单(用于保存更新) -->
<form method="POST" id="main-form">
  {% csrf_token %}
  <div class="form-group">
    <label for="title">Title</label>
    <input type="text" name="title" class="form-control" id="title" value="{{ item.title }}" required>
  </div>
  <div class="form-group">
    <label for="memo">Memo</label>
    <textarea name="memo" rows="5" class="form-control" id="memo">{{ item.memo }}</textarea>
  </div>
  <div class="form-group form-check">
    <input type="checkbox" name="important" class="form-check-input" id="important" 
           {% if item.important %}checked{% endif %}>
    <label class="form-check-label" for="important">Important</label>
  </div>
</form>

<!-- 所有操作按钮统一放入 Flex 容器 -->
<div class="d-flex flex-wrap align-items-center gap-2">
  <!-- Save 按钮:绑定到主表单 -->
  <button type="submit" class="btn btn-primary" form="main-form">Save</button>

  <!-- Complete 按钮:独立表单 -->
  {% if item.datecompleted is None %}
  <form method="POST" action="{% url 'completeitem' item.id %}">
    {% csrf_token %}
    <button type="submit" class="btn btn-success">Complete</button>
  </form>
  {% endif %}

  <!-- Uncomplete 按钮:独立表单(建议使用 btn-warning 更语义) -->
  {% if item.datecompleted %}
  <form method="POST" action="{% url 'uncompleteitem' item.id %}">
    {% csrf_token %}
    <button type="submit" class="btn btn-warning">Uncomplete</button>
  </form>
  {% endif %}

  <!-- Delete 按钮:独立表单 -->
  <form method="POST" action="{% url 'deleteitem' item.id %}">
    {% csrf_token %}
    <button type="submit" class="btn btn-danger">Delete</button>
  </form>
</div>

? 关键要点说明

  • form="main-form" 属性:让 Save 按钮脱离其原始 <form></form> 块,但仍准确提交 #main-form 的数据(包括 title/memo/important),无需 JS 干预。
  • d-flex flex-wrap align-items-center gap-2:Bootstrap 5+ 推荐写法,替代旧版 mr-2;gap-2 提供统一间距,flex-wrap 保证小屏自动换行,align-items-center 垂直居中对齐。
  • 每个功能按钮保持独立 <form></form>:确保 CSRF token 正确注入、URL 路由精准、后端视图逻辑完全解耦(例如 deleteitem 视图无需处理 memo 字段)。
  • 无 JavaScript 依赖:纯 HTML/CSS 方案,兼容性好,调试简单,符合 Django “显式优于隐式” 哲学。

⚠️ 注意事项

  • 切勿将多个 action 混入同一个 <form></form> —— 这会导致逻辑冲突,且违背 RESTful 设计原则;
  • 若使用 Bootstrap 4,请将 gap-2 替换为 mr-2(并在最后一个按钮移除 mr-2 避免多余空白);
  • 所有 POST 表单必须包含 {% csrf_token %},否则 Django 会返回 403 错误;
  • 建议为 Uncomplete 按钮使用 btn-warning(而非 btn-success),通过颜色强化语义区分。

通过此方案,你既能获得整洁的 UI 布局,又能严格保障各按钮背后业务逻辑的独立性与可靠性——这才是 Django Web 开发中“优雅解决样式与功能矛盾”的正确姿势。

热门AI工具

更多
WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

创客贴AI

创客贴AI是一款AI图像与设计工具,AI辅助的智能在线设计工具。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

相关专题

更多
Python Web 框架 Django 深度开发
Python Web 框架 Django 深度开发

本专题系统讲解 Python Django 框架的核心功能与进阶开发技巧,包括 Django 项目结构、数据库模型与迁移、视图与模板渲染、表单与认证管理、RESTful API 开发、Django 中间件与缓存优化、部署与性能调优。通过实战案例,帮助学习者掌握 使用 Django 快速构建功能全面的 Web 应用与全栈开发能力。

593

2026.02.04

Python Django REST Framework接口安全与认证体系实践
Python Django REST Framework接口安全与认证体系实践

本专题围绕 Django REST Framework 展开,深入讲解 API 认证、JWT 鉴权、权限控制、接口安全防护以及防攻击策略设计。通过完整后端案例,帮助开发者构建安全可靠的 Web API 服务体系。

260

2026.06.29

Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

0

2026.11.06

Postman请求头Headers怎么设置
Postman请求头Headers怎么设置

围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。

0

2026.11.06

Postman接口请求发送教程
Postman接口请求发送教程

详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。

0

2026.11.06

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

20

2026.11.05

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

20

2026.11.05

DBeaver连接创建与配置教程
DBeaver连接创建与配置教程

本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。

20

2026.11.04

XORM框架结构体映射与表结构同步
XORM框架结构体映射与表结构同步

本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。

20

2026.11.04

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Django 6.1 官方文档
Django 6.1 官方文档

共0课时 | 0人学习

Django 教程
Django 教程

共28课时 | 10万人学习

Django DRF 源码解析
Django DRF 源码解析

共21课时 | 2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn