FlaskForm-如何保持页面位置并将错误传递回页面

时间:2018-06-29 14:41:19

标签: python flask flask-wtforms

我有一个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()传递邮件对象的方法?

0 个答案:

没有答案