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


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,以便在前端显示错误消息。

AI at Meta AI at Meta

Facebook 旗下的AI研究平台

AI at Meta 72 查看详情 AI at Meta

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-->
                        <input 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  # 陕西seo教程哪个便宜  # 使用了  # 这一  # 您的  # 提交后  # 用户提供  # 在这个  # 邮件发送  # 换行  # red  # word  # 前端  # bootstrap  # app  # 后端  # ai  # 路由  # 表单提交  # 表单  # 武汉网站搜索优化公司  # 精美网站建设价格  # 推广国外相亲网站有哪些  # 郑州合约优化招聘网站  # 彭阳网站推广公司招聘  # 网络营销推广资金用处  # 河南360网站推广厂家  # 封丘seo快速排名  # 荆州seo优化收费标准 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: word怎么将图片设置为页面背景并不影响打印_Word图片背景设置方法  使用Python和NLTK从文本中高效提取名词的实用教程  风车动漫官网首页入口登录 风车动漫在线观看正版地址  奥克斯空调不制热啥毛病_奥克斯空调不制热原因分析及解决技巧  C#中的Record类型有什么优势?C# 9新特性Record与Class的用法区别  Win11怎么开启HDR_Windows 11显示器画质增强设置  微博网页版访问入口 微博网页版网页端使用指南  海外搜索引擎推广效果怎么样,怎么分析效果!  《全民k歌》音乐怎么下载到本地2025  qq音乐官方网站入口_qq音乐在线听歌网页版链接  qq邮箱怎么注册_QQ邮箱注册步骤与注意事项  微信如何设置字体大小_微信字体设置的阅读舒适  优化CSS动画与J*aScript定时器协同:构建稳定Toast提示  泰拉瑞亚网页版在线登录入口 泰拉瑞亚官方正版入口  芒果TV官网登录入口 芒果TV官方网站登录入口  Coolpad5890 ROM刷机包  多多买菜门店端app订单查看方法  VS Code快捷键when上下文子句的妙用  mysql镜像配置如何设置用户权限组_mysql镜像配置用户组与权限分级管理方法  vivo浏览器怎么离线保存网页 vivo浏览器下载完整页面以便无网络时阅读  excel怎么制作考勤表 excel考勤模板与函数公式讲解  如何在Golang中处理表单文件上传_Golang 表单文件上传示例  Excel如何快速找到并断开外部数据源链接_Excel外部数据源断开方法  《鹿路通》退余额方法  高德地图导航路线偏差报警频繁怎么办 高德地图路线偏差修复与优化方法  《三角洲行动》战斗步枪与机枪类改装代码分享  sublime text 4如何安装_最新版sublime下载与汉化教程  微信客户端怎么查看二维码_微信客户端个人二维码查看方法  win11如何开启单声道音频 Win11为听障用户合并左右声道【辅助】  驱动人生:游戏修复指南  如何在mysql中设计餐饮点餐系统_mysql点餐系统项目实战  PHP 4 函数中引用参数的默认值限制与解决方案  深入理解J*aScript异步操作:setTimeout与调用栈的真相  附近酒吧怎么找?  NumPy 高性能技巧:基于多列条件查找最近邻行索引的向量化实现  京东物流快递破损了怎么办_京东快递破损理赔流程  嘀嗒顺风车如何开具电子发票  J*aScript二进制处理_ArrayBuffer与Blob  电脑的“恢复环境(WinRE)”找不到怎么办_Windows系统恢复环境重建【高级修复】  动漫之家观看全集库 动漫之家免费资源网地址  CodeIgniter 3 连接 SQL Server:正确获取查询结果的教程  构建可配置的J*aScript加权点击计数器与共享总计功能  店铺如何做视频号推广?做视频号推广有用吗?  优酷下载视频的清晰度怎么选_优酷缓存清晰度设置与选择指南  iPhone 13 mini如何清理Safari缓存_iPhone 13 mini浏览器缓存清理方法  微信客户端如何找回密码_微信客户端忘记密码找回方法  风神瞳获取全攻略  学习通网页版课程打不开_课程无法访问时的解决方法  阿里旺旺电脑网页版入口 阿里旺旺电脑版网页登录入口  Sublime Text怎么关闭自动完成_Sublime禁用Auto Complete设置 

 2025-11-20

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.