本文介绍如何使用 Flask 框架在 HTML 表单提交后向用户显示成功或失败的消息。我们将利用 Flask 的模板引擎和条件语句,根据表单提交的结果动态地在页面上呈现相应的消息,无需编写额外的 JavaScript 代码。
修改 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)关键修改:
修改 HTML 模板: 在 HTML 模板中使用 Jinja2 模板引擎的条件语句 ({% if ... %}),根据 msg_sent 变量的值显示不同的消息。
Contact Me
If you are interested in me, I would love to hear it.
关键修改:
通过以上步骤,我们成功地使用 Flask 和 Jinja2 模板引擎实现了在 HTML 表单提交后显示成功/失败消息的功能,而无需编写额外的 JavaScript 代码。这种方法简单易懂,易于维护,适用于大多数 Web 应用场景。 记住,良好的用户体验至关重要,清晰明确的反馈消息能有效提升用户满意度。