重定向表单验证失败(Flask-WTForms)

时间:2017-06-25 01:40:17

标签: flask wtforms flask-wtforms post-redirect-get

我正在尝试将Flask-WTF用于我正在添加到我最近继承的Flask应用程序的新表单中。我是Flask生态系统的新手(对WTForms来说是全新的),而且我在四年内没有进行任何网络开发。

Flask-WTF文档中的示例代码呈现表单验证失败的页面,而不是重定向(Post/Redirect/Get)。此时,浏览器刷新将重新提交以前的POST。这不好,对吧?虽然大多数人似乎没有给予这种情况任何关注,但我确实看到一些人觉得这是要避免的事情(例如herehere)。

那么在使用Flask-WTF时如何避免这个问题呢?如果我重定向验证失败,我认为我失去了在每个字段上显示验证错误的能力。或许我不应该担心这种情况?

1 个答案:

答案 0 :(得分:1)

个人从未觉得这是一个问题。我使用Flask-WTF w / Flask-Bootstrap并在验证失败时突出显示表单字段错误。如果他们尝试重新提交表单,它将再次失败并且永远不会达到数据库级别,因此您不必担心Post / Redirect / Get正试图解决的问题。

@app.route('/', methods=['GET', 'POST'])
def index():
    form = MyForm()
    if form.validate_on_submit():
        # add/update db. if form is invalid you never get here
        return redirect(url_for('success'))
    return render_template('index.html', form=form)