【发布时间】:2021-02-01 06:29:37
【问题描述】:
我是 Python 新手,我正在尝试为我的个人博客构建一个联系页面。我很困惑如何将联系路由与 HTML 模板连接起来。 这是我的 Python 代码:
class ContactForm(Form):
name = TextField("Name", [validators.DataRequired("Message 1"), validators.Length(min=5, max=20)])
email = TextField("Email", [validators.DataRequired("Message 2"), validators.Length(min=6,max=30)])
message = TextField("Message",[validators.DataRequired("Message 3"), validators.Length(min=10, max=200)])
phone = StringField("Phone", [validators.Optional(strip_whitespace=True)])
submit = SubmitField("Send")
@app.route('/contact', methods= ["POST", "GET"])
def contact():
form = ContactForm()
if request.method == "POST":
if form.validate() == False:
flash("These fields are required")
return render_template('contact.html', form=form)
else:
return "Form posted."
elif request.method == "GET":
return render_template('contact.html', form=form)
这是我的联系页面的 HTML 模板:
<div class="container">
<div class="row">
<div class="col-lg-8 col-md-10 mx-auto">
<p>Want to get in touch? Fill out the form below to send me a message and I will get back to you as soon as possible!</p>
<form action="{{ url_for('contact') }}" name="sentMessage" id="contactForm" method=post>
<div class="control-group">
<div class="form-group floating-label-form-group controls">
<label>Name</label>
<input type="text" class="form-control" placeholder="Name" id="name" required data-validation-required-message="Please enter your name.">
<p class="help-block text-danger"></p>
</div>
</div>
<div class="control-group">
<div class="form-group floating-label-form-group controls">
<label>Email Address</label>
<input type="email" class="form-control" placeholder="Email Address" id="email" required data-validation-required-message="Please enter your email address.">
<p class="help-block text-danger"></p>
</div>
</div>
<div class="control-group">
<div class="form-group col-xs-12 floating-label-form-group controls">
<label>Phone Number</label>
<input type="tel" class="form-control" placeholder="Phone Number" id="phone" required data-validation-required-message="Please enter your phone number.">
<p class="help-block text-danger"></p>
</div>
</div>
<div class="control-group">
<div class="form-group floating-label-form-group controls">
<label>Message</label>
<textarea rows="5" class="form-control" placeholder="Message" id="message" required data-validation-required-message="Please enter a message."></textarea>
<p class="help-block text-danger"></p>
</div>
</div>
<br>
<div id="success"></div>
<button type="submit" class="btn btn-primary" id="sendMessageButton">Send</button>
</form>
</div>
</div>
</div>
将 HTML 模板(姓名、电子邮件、消息、电话)中的表单与 Python 路由连接起来的最佳方法是什么,这样,一旦填写了所有字段并单击了“发送”按钮” , 出现消息“已发布表单。”我阅读了有关 WTF 表单的 Flask 文档,但我仍然不确定它是如何工作的。 非常感谢您的各种建议。
【问题讨论】:
标签: html flask flask-wtforms