新闻中心

使用 Flask 在 HTML 表单提交后显示成功/失败消息

2025-11-21
浏览次数:
返回列表

使用 flask 在 html 表单提交后显示成功/失败消息

本文介绍如何使用 Flask 框架在 HTML 表单提交后向用户显示成功或失败的消息。我们将利用 Flask 的模板引擎和条件语句,根据表单提交的结果动态地在页面上呈现相应的消息,无需编写额外的 J*aScript 代码。

实现步骤

  1. 修改 Flask 路由函数: 在 Flask 路由函数中,根据表单处理的结果设置一个变量,用于传递给 HTML 模板。例如,如果邮件发送成功,则设置 msg_sent=True,否则设置 msg_sent=False。

    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():
        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']}"
                    )
                msg_sent = True  # 邮件发送成功
            except Exception as e:
                print(f"邮件发送失败: {e}")
                msg_sent = False # 邮件发送失败
    
            return render_template("index.html", msg_sent=msg_sent)
        return render_template("index.html", msg_sent=False)
    
    if __name__ == "__main__":
        app.run(debug=True)

    关键修改:

    • 添加了 try...except 块来捕获邮件发送过程中的异常。
    • 根据邮件发送是否成功,设置 msg_sent 变量的值。
  2. 修改 HTML 模板: 在 HTML 模板中使用 Jinja2 模板引擎的条件语句 ({% if ... %}),根据 msg_sent 变量的值显示不同的消息。

    佳蓝在线销售系统(创业版) 佳蓝在线销售 佳蓝在线销售系统(创业版) 佳蓝在线销售

    1、对ASP内核代码进行DLL封装,从而大大提高了用户的访问速度和安全性;2、采用后台生成HTML网页的格式,使程序访问速度得到进一步的提升;3、用户可发展下级会员并在下级购买商品时获得差额利润;4、全新模板选择功能;5、后台增加磁盘绑定功能;6、后台增加库存查询功能;7、后台增加财务统计功能;8、后台面值类型批量设定;9、后台财务曲线报表显示;10、完善订单功能;11、对所有传输的字符串进行安全

    佳蓝在线销售系统(创业版) 佳蓝在线销售 0 查看详情 佳蓝在线销售系统(创业版) 佳蓝在线销售
    <!-- 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 success message-->
                <!---->
                <!-- This is what your users will see when the form-->
                <!-- has successfully submitted-->
                {% if msg_sent %}
                    <div class="text-center text-white mb-3">
                        <div class="fw-bolder">Form submission successful!</div>
                    </div>
                {% else %}
                    <!-- Submit error message-->
                    <!---->
                    <!-- This is what your users will see when there is-->
                    <!-- an error submitting the form-->
                    <div class="text-center text-danger mb-3">Error sending message!</div>
                {% endif %}
                <!-- Submit Button-->
                <div class="text-center">
                    <button class="btn btn-primary btn-xl text-uppercase" id="submitButton" type="submit">Send Message</button>
                </div>
            </form>
        </div>
    </section>

    关键修改:

    • 移除了原有的 d-none 类的 div 元素,因为我们不再需要 J*aScript 来控制它们的显示。
    • 添加了 {% if msg_sent %} 和 {% else %} 块,根据 msg_sent 的值显示不同的消息。 可以根据需要自定义成功和失败消息的内容和样式。

注意事项

  • 确保已正确安装 Flask 和 smtplib 库。
  • 替换 MY_EMAIL 和 MY_PASSWORD 为你自己的邮箱地址和密码。
  • 建议使用环境变量来存储敏感信息,如邮箱密码,而不是直接硬编码在代码中。
  • 此示例仅用于演示目的,实际应用中可能需要更完善的错误处理和安全措施。
  • 可以根据需要自定义成功和失败消息的样式和内容。

总结

通过以上步骤,我们成功地使用 Flask 和 Jinja2 模板引擎实现了在 HTML 表单提交后显示成功/失败消息的功能,而无需编写额外的 J*aScript 代码。这种方法简单易懂,易于维护,适用于大多数 Web 应用场景。 记住,良好的用户体验至关重要,清晰明确的反馈消息能有效提升用户满意度。

以上就是使用 Flask 在 HTML 表单提交后显示成功/失败消息的详细内容,更多请关注其它相关文章!


# 文档  # 汤阴网站推广哪家好  # 惠安营销推广公司招聘  # 百度seo推广顾问  # 河源网站建设营销招聘  # 主要营销推广对象包括  # 开封企业品牌网站建设  # 固原seo公司方便火星  # 茂名网站建设代码是多少  # 观澜关键词排名优化价格  # 米线营销推广语怎么写简短  # 自己的  # 拖放  # 使用技巧  # 可以根据  # 自定义  # javascript  # 绑定  # 邮件发送  # 在线销售  # 表单  # red  # 表单提交  # 邮箱  # 环境变量  # 路由  # ai  # app  # 编码  # html  # java  # word 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: sublime怎么格式化代码_sublime代码美化与一键排版插件配置  C++如何操作注册表_Windows平台下C++读写注册表的API函数详解  Windows10怎么开启存储感知 Windows10系统设置自动清理临时文件释放C盘空间【教程】  NRF24L01数据传输深度解析:解决大载荷接收异常与分包策略  C++如何实现一个智能指针_手动实现C++ shared_ptr的引用计数功能  可靠CSGO开箱平台解析 CSGO开箱网合集  4399网页游戏电脑版全新入口 4399电脑端在线玩指南  J*a应用程序首次运行自动创建文件与目录的最佳实践  三星ZFold5多任务卡顿_Samsung ZFold5流畅度提升  正确连接J*aScript到HTML实现可点击图片与自定义事件处理  中兴BladeV30怎样用测距估书架层高_iPhone中兴BladeV30测距估书架层高【家装参考】  内存检查:在VS Code中调试C++时的内存视图  哔哩哔哩忘记密码了怎么找回_哔哩哔哩密码找回方法  在python-socketio事件处理器中安全访问Flask应用上下文  UC浏览器如何安装插件 UC浏览器添加扩展程序详细教程【进阶】  Golang如何实现微服务鉴权与权限控制_Golang微服务鉴权与权限管理实践  J*aScript中管理异步API调用:确保操作顺序与数据一致性  Win11怎么安装Linux子系统 Win11 WSL2安装Ubuntu及环境配置指南  sublime侧边栏怎么增强功能_SideBarEnhancements for sublime安装与配置  J*aScript map 迭代中检测空数组元素的有效方法  打开就能玩的植物大战僵尸 植物大战僵尸网页版传送门  如何在Promise链中有效终止错误处理后的执行  微博网页版官方账号登录 微博网页版内容浏览使用指南  AO3最新可访问网址 Archive of Our Own官方在线入口  Angular Material 垂直步进器:实现底部到顶部排序的教程  小米汽车11月交付量突破40000台!雷军:将继续努力  Angular中单选按钮的正确使用与常见陷阱解析  谷歌浏览器怎么给标签页静音_Chrome标签静音快捷操作  MongoDB Aggregation:在嵌套对象数组中精确匹配ObjectId  修复二维数组索引越界异常:一维循环到二维坐标的正确映射  J*a中实现Go语言select通道多路复用机制  铁路12306官网网页端快速入口 铁路12306官方首页登录教程  《GTA6》开发画面疑似泄露!这次可不是AI了  cad怎么合并重叠的线段_cad清理重复重叠线条的操作方法  Bing引擎入口最新2025 Bing搜索免费官方登录  ACG动漫手机版官网入口 手机ACG动漫APP在线观看正版  EMS快递官网app_中国邮政速递物流手机客户端  AWS EC2实例间SQL Server连接超时:安全组配置与故障排除指南  qq浏览器打开空白页怎么办 qq浏览器启动后显示白屏的解决教程  抖音隐秘迷城小游戏入口_ 抖音冒险解谜小游戏秒玩  Lar*el DB::listen 事件中的查询执行时间单位解析  Tailwind CSS line-clamp 布局问题解析与修复指南  J*a TimerTask文件监控:HashMap状态管理与常见陷阱规避指南  生成rdflib自定义SPARQL函数:参数匹配与实践指南  微信网页版扫码登录入口 微信网页版二维码登录入口  Pandas DataFrame 多条件优先级排序与排名  Go语言中高效处理x-www-form-urlencoded表单数据  智慧团建扫码登录入口 智慧团建扫码登录入口官网版​  《铁拳8》黑皮辣妹新实机:元气满满的18岁少女!  Kafka Streams中基于消息头条件过滤消息的实现指南 

搜索