我希望能够从表单中获取用户名并将其附加到确认页面,但它一直返回none
下面是HTML表单
<form name="sentMessage" id="contactForm" action="{{ url_for('contact') }}" method="post" novalidate>
<div class="control-group">
<div class="form-group floating-label-form-group controls">
<label>Name</label>
<input type="text" name="name" 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" name="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" name="phone" 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" name="message" 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>
和flask代码在
下面@app.route("/contact")
def contact():
return render_template("contact.html")
@app.route("/form-entry", methods=["GET", "POST"])
def receive_data():
if request.method == "POST":
name = request.form.get("name")
return f"<h1>{name} Successfully sent your message</h1>"
我尝试使用request.form["name"],但它返回一个错误的请求
定义的模板,当通过/contact
端点呈现时,以下行(用省略号替换不相关的属性):
<form ... action="{{ url_for('contact') }}" method="post" ...>
呈现
<form ... action="/contact" method="post" ...>
提交表单将再次击中相同的/contact
端点,它不接受POST
方法,因为接受methods
的默认列表用于此。这导致了错误的请求报告。
假设预期目标是received_data
函数,连接到/form-entry
端点,则模板中url_for
的预期参数应该是'receive_data'
,即
<form ... action="{{ url_for('receive_data') }}" method="post" ...>
将导致如下呈现:
<form ... action="/form-entry" method="post" ...>
当提交该表单时,应该使用预期的端点,并且应该毫无问题地呈现消息。