我有一个Flask模板,该模板的页面底部具有HTML部分contact
,该模板呈现了联系表单,并包含使用FlaskForm错误的错误处理,即代码如下:
{{ form.name.label }}
{{ form.name(size=128) }}
{% for error in form.name.errors %}
<span style="color: red;">[{{error}}]</span>
{% endfor %}
我支持的Flask视图如下:
@app.route('/', methods=['GET', 'POST'])
def home():
mail = MailForm()
if mail.validate_on_submit():
# send email
flash('Thank you - we have received your message and will contact your shortly.')
return redirect('/#contact')
if mail.is_submitted():
# PROBLEM: Here I want to return to the page to show the error field messages,
# and want to it position the page at /#contact
else:
return render_template(
'index.html',
title='Home Page', form=mail
)
我的问题与标记为#PROBLEM
的部分有关。如果在此位置使用return redirect('/#contact')
,则可以正确放置页面,但是不会返回/填充mail
错误,因此页面上不会显示错误消息。如果我使用return render_template('index.html', form=mail)
,则会看到错误消息,但是某些浏览器将切换回页面顶部,而不是保持联系部分的位置。
因此,是否有将节标记传递到render_template()
的方法,还是有通过redirect()
传递邮件对象的方法?