新闻中心
Flask 表单提交后显示成功或失败消息的完整教程

本文旨在指导开发者在使用 Flask 框架构建的 Web 应用中,如何在表单提交后显示成功或失败消息。通过利用 Flask 的模板引擎和条件语句,我们可以根据表单处理的结果,向用户提供即时的反馈。本文将提供详细的代码示例和步骤,帮助你轻松实现这一功能。
利用 Flask 模板引擎显示消息
在 Flask 应用中,最常用的方法是在后端处理表单提交,并在模板中显示相应的消息。这种方法利用了 Flask 的模板引擎(通常是 Jinja2)的强大功能,允许我们根据变量的值动态地渲染 HTML 内容。
1. 后端 Flask 代码修改
首先,我们需要在 Flask 的路由函数中,根据表单处理的结果设置一个变量,并将该变量传递给模板。
from flask import Flask, render_template, request
import smtplib
MY_EMAIL = "your email"
MY_PASSWORD = "your pw"
app = Flask(__name__)
@app.route('/', methods=["GET", "POST"])
def home():
success = False # 初始化 success 变量
if request.method == "POST":
data = request.form
print(data["name"])
print(data["email"])
print(data["phone"])
print(data["message"])
try:
with smtplib.SMTP("smtp.gmail.com", port=587) as connection:
connection.starttls()
connection.login(user=MY_EMAIL, password=MY_PASSWORD)
connection.sendmail(
from_addr=MY_EMAIL,
to_addrs=MY_EMAIL,
msg=f"Subject:New Message\n\nName: {data['name']}\nEmail: {data['email']}\nPhone: {data['phone']}\nMessage: {data['message']}"
)
success = True # 邮件发送成功
except Exception as e:
print(f"Error sending email: {e}")
success = False # 邮件发送失败
return render_template("index.html", success=success)
return render_template("index.html", success=False)
if __name__ == "__main__":
app.run(debug=True)在这个例子中,我们添加了一个 success 变量,它的值取决于邮件是否成功发送。然后,我们将 success 变量传递给 index.html 模板。
注意: 务必处理异常情况,例如邮件发送失败,并将 success 设置为 False,以便在前端显示错误消息。
Kreado AI
Kreado AI是一个多语言AI视频创作平台,只需输入文本或关键词,即可创作真实/虚拟人物的多语言口播视频。 为创作者提供AI赋能
182
查看详情
2. 前端 HTML 代码修改
接下来,我们需要在 HTML 模板中使用 Jinja2 的条件语句来显示成功或失败消息。
<!-- Contact-->
<section class="resume-section" id="contact">
<div class="container">
<div class="resume-section-content">
<h2 class="mb-0">Contact Me</h2>
<div class="subheading mb-5">
If you are interested in me, I would love to hear it.
</div>
</div>
<form id="contactForm" action="{{ url_for('home') }}" method="post">
<!-- 表单内容 -->
<div class="row align-items-stretch mb-5">
<div class="col-md-6">
<div class="form-group">
<!-- Name input-->
<input class="form-control" id="name" name="name" type="text" placeholder="Your Name *" data-sb-validations="required" />
<div class="invalid-feedback" data-sb-feedback="name:required">A name is required.</div>
</div>
<div class="form-group">
<!-- Email address input-->
<i
nput class="form-control" id="email" name="email" type="email" placeholder="Your Email *" data-sb-validations="required,email" />
<div class="invalid-feedback" data-sb-feedback="email:required">An email is required.</div>
<div class="invalid-feedback" data-sb-feedback="email:email">Email is not valid.</div>
</div>
<div class="form-group mb-md-0">
<!-- Phone number input-->
<input class="form-control" id="phone" name="phone" type="tel" placeholder="Your Phone *" data-sb-validations="required" />
<div class="invalid-feedback" data-sb-feedback="phone:required">A phone number is required.</div>
</div>
</div>
<div class="col-md-6">
<div class="form-group form-group-textarea mb-md-0">
<!-- Message input-->
<textarea class="form-control" id="message" name="message" placeholder="Your Message *" data-sb-validations="required"></textarea>
<div class="invalid-feedback" data-sb-feedback="message:required">A message is required.</div>
</div>
</div>
</div>
<!-- Submit Button-->
<div class="text-center">
<button class="btn btn-primary btn-xl text-uppercase" id="submitButton" type="submit">Send Message</button>
</div>
</form>
<!-- 显示消息 -->
{% if success %}
<div class="alert alert-success" role="alert">
邮件已成功发送!
</div>
{% else %}
<div class="alert alert-danger" role="alert">
邮件发送失败,请检查您的网络连接或稍后再试。
</div>
{% endif %}
</div>
</section>在这个例子中,我们使用了 {% if success %} 和 {% else %} 语句来根据 success 变量的值显示不同的消息。如果 success 为 True,则显示成功消息;否则,显示失败消息。使用了 Bootstrap 的 alert 类来美化消息框。
3. 代码解释和注意事项
- success 变量: 这个变量用于指示表单处理是否成功。在 Flask 代码中,根据实际情况设置它的值。
- Jinja2 条件语句: {% if ... %}、{% else %} 和 {% endif %} 是 Jinja2 模板引擎的条件语句,用于根据条件动态地渲染 HTML 内容。
- 错误处理: 在实际应用中,务必进行完善的错误处理,以便向用户提供更友好的错误提示。
- 安全性: 始终对用户输入进行验证和清理,以防止安全漏洞。
4. 总结
通过结合 Flask 的后端处理和 Jinja2 的前端模板,我们可以轻松地在表单提交后显示成功或失败消息。这种方法简单易懂,适用于各种 Web 应用。记住,良好的错误处理和用户反馈是构建高质量 Web 应用的关键。
以上就是Flask 表单提交后显示成功或失败消息的完整教程的详细内容,更多请关注其它相关文章!
# html
# word
# 杨凌交通网站建设方案
# 建设网站的心得体会范文
# 槐荫区引流营销推广制度
# seo网站制作哪家优惠
# 湛江服务网站优化效果
# 关键词竞价排名方法分析
# seo如何优化网站推广
# 哪里能网站优化公司
# 网站seo文章怎么写
# 香河seo哪家专业
# 多语言
# 自适应
# 用户提供
# 在这个
# 邮件发送
# 输入框
# 换行
# 表单
# 关键词
# red
# 表单提交
# 路由
# ai
# 后端
# app
# bootstrap
# 前端
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
J*aScript中高效管理与清空动态列表:避免循环陷阱
新手怎么开始学化妆 零基础化妆入门教程
j*a toString()的覆盖
Win11 USB传输速度慢怎么解决 Win11 USB驱动更新与设置
抓大鹅无需下载版 抓大鹅秒玩版入口
sublime如何只显示或隐藏特定类型文件_sublime侧边栏文件过滤
虫虫漫画精品漫画官网_虫虫漫画精品漫画官网进入精品漫画
Win11文件资源管理器卡顿怎么修 Win11重置资源管理器进程优化响应速度【修复方法】
怎样把文件彻底粉碎无法恢复_Windows下安全删除敏感数据【隐私保护】
Golang如何实现Web接口签名验证_Golang Web接口签名校验开发方法
KFC早餐时段怎么领特惠代码_KFC早餐订餐优惠代码获取与使用说明
iwriter统一登录平台 iwrite账号密码登录页面
在WordPress中通过REST API获取BasicAuth保护的远程文章
如何为你的Composer包编写自动化测试_集成PHPUnit到Composer的scripts工作流
yy漫画网页版官方入口_yy漫画官网登录页面链接
小米14应用无法联网原因分析_小米14网络权限修复
解决Django多数据库/多Schema环境下外键迁移问题
学习通网页版快速入口 学习通官网网页版直接打开
mc.js游戏直达 mc.js网页免下载版本秒进地址
葱吃多了会怎样 葱吃多了会伤胃吗
解决移动端滚动问题的overflow属性应用指南
漫蛙漫画官方主页入口 漫蛙MANWA网页直达访问链接
机构:以往存储涨价周期小米利润率实际上有所改善 能转嫁给消费者等
win11 arm版怎么安装 M1/M2 Mac虚拟机安装ARM win11的方法
ArrayList与LinkedList核心操作的Big-O复杂度分析
HuggingFaceEmbeddings中向量嵌入维度调整的限制与理解
XML中包含HTML标签导致解析错误? 正确嵌入非XML数据的两种方法
漫蛙漫画登录站点 漫蛙2正版漫画快速访问
深入理解Go语言中的指针类型:以*string为例
Promise错误处理:在catch后终止链式then执行的策略
微信网页版扫码登录入口 微信网页版二维码登录入口
没有大陆身份证/银行卡如何实名微信? 亲测有效的几种方法分享
向日葵客户端怎么进行远程CentOS控制_向日葵客户端远程CentOS控制操作教程
Mac怎么锁定备忘录_Mac备忘录加密设置教程
J*aScript数据结构转换:将对象数组按类别分组
58动漫网在线官方网 58动漫网正版动漫入口网址
外媒分析《GTA6》定价:卖100美元可以但真没必要!
如何解决电商平台定制报价请求的“黑洞”问题,SprykerQuoteRequest模块助你提升客户体验与销售效率
高德地图总提示网络异常怎么办 高德地图离线导航设置与网络排查方法
谷歌浏览器如何快速清除某个网站的数据_Chrome网站缓存清理方法
C++如何实现线程池_C++11手动实现一个简单的固定大小线程池
CSS如何设置hover状态颜色_hover伪类调整背景或文字颜色
俄罗斯Yandex免登录入口_Yandex搜索引擎官网一键直达
html5 app怎么运行环境_配html5 app运行环境【教程】
HTML元素状态管理:根据DIV内容动态启用/禁用按钮
微信聊天记录怎么加密_微信聊天记录加密方法
Win11怎么关闭快速启动_Win11彻底关机设置教程
QQ邮箱网页版入口页面 QQ邮箱在线登录入口官网
Fabric Mod开发:在1.19.3+版本中正确添加自定义物品并管理物品组
J*aScript Promise链中如何正确终止后续.then执行并处理错误


2025-11-20
浏览次数:次
返回列表
nput class="form-control" id="email" name="email" type="email" placeholder="Your Email *" data-sb-validations="required,email" />
<div class="invalid-feedback" data-sb-feedback="email:required">An email is required.</div>
<div class="invalid-feedback" data-sb-feedback="email:email">Email is not valid.</div>
</div>
<div class="form-group mb-md-0">
<!-- Phone number input-->
<input class="form-control" id="phone" name="phone" type="tel" placeholder="Your Phone *" data-sb-validations="required" />
<div class="invalid-feedback" data-sb-feedback="phone:required">A phone number is required.</div>
</div>
</div>
<div class="col-md-6">
<div class="form-group form-group-textarea mb-md-0">
<!-- Message input-->
<textarea class="form-control" id="message" name="message" placeholder="Your Message *" data-sb-validations="required"></textarea>
<div class="invalid-feedback" data-sb-feedback="message:required">A message is required.</div>
</div>
</div>
</div>
<!-- Submit Button-->
<div class="text-center">
<button class="btn btn-primary btn-xl text-uppercase" id="submitButton" type="submit">Send Message</button>
</div>
</form>
<!-- 显示消息 -->
{% if success %}
<div class="alert alert-success" role="alert">
邮件已成功发送!
</div>
{% else %}
<div class="alert alert-danger" role="alert">
邮件发送失败,请检查您的网络连接或稍后再试。
</div>
{% endif %}
</div>
</section>