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

Flask 表单验证失败时重定向(表单),flask,wtforms,flask-wtforms,post-redirect-get,Flask,Wtforms,Flask Wtforms,Post Redirect Get,我正在尝试将Flask WTF用于一个新表单,该表单将添加到我最近继承的Flask应用程序中。我对Flask生态系统相当陌生(对WTForms完全陌生),四年来我没有做过任何web开发 Flask WTF文档中的示例代码呈现表单验证失败的页面,而不是重定向()。此时,浏览器刷新将重新提交上一篇文章。这不好,对吧?虽然大多数人似乎没有对这种情况给予任何关注,但我确实看到一些人觉得这是需要避免的事情(例如,和) 那么,在使用Flask WTF时如何避免这个问题呢?如果我在验证失败时重定向,我认为我失

我正在尝试将Flask WTF用于一个新表单,该表单将添加到我最近继承的Flask应用程序中。我对Flask生态系统相当陌生(对WTForms完全陌生),四年来我没有做过任何web开发

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


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

我个人从未觉得这是个问题。我使用了
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)

但是,如果某个状态自上一个请求以来发生了变化,那么它在将来不一定会再次失败。