我正在尝试使用Flask-WTF创建一个新表单,并将其添加到最近继承的Flask应用程序中。我对Flask生态系统相当陌生(对WTForms来说完全是新的),而且我已经四年没有做过任何web开发了。
Flask-WTF文档中的示例代码在表单验证失败时呈现页面,而不是重定向(Post/Redirect/Get)。在这一点上,浏览器刷新将重新提交上一篇文章。这可不妙,对吧?虽然大多数人似乎没有注意到这种情况,但我确实看到一些人认为这是应该避免的(例如here和here)。
那么我如何在使用Flask-WTF时避免这个问题呢?如果我重定向到验证失败,我想我失去了在每个字段上显示验证错误的能力。或者也许我不应该担心这种情况?
发布于 2017-06-25 16:34:19
我个人从来不觉得这是个问题。我使用带有Flask-Bootstrap的Flask-WTF,它会在验证失败时为我突出显示表单字段错误。如果他们尝试重新提交表单,它将再次失败,并且永远不会达到数据库级别,因此您不必担心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)https://stackoverflow.com/questions/44742438
复制相似问题