我正在尝试将Flask-WTF用于我正在添加到我最近继承的Flask应用程序的新表单中。我是Flask生态系统的新手(对WTForms来说是全新的),而且我在四年内没有进行任何网络开发。
Flask-WTF文档中的示例代码呈现表单验证失败的页面,而不是重定向(Post/Redirect/Get)。此时,浏览器刷新将重新提交以前的POST。这不好,对吧?虽然大多数人似乎没有给予这种情况任何关注,但我确实看到一些人觉得这是要避免的事情(例如here和here)。
那么在使用Flask-WTF时如何避免这个问题呢?如果我重定向验证失败,我认为我失去了在每个字段上显示验证错误的能力。或许我不应该担心这种情况?
答案 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)