Flask-WTF 表单在 GET 请求期间有错误
Flask-WTF form has errors during GET request
我有一个带有 Flask-WTF 表单的 Flask 视图。当我在浏览器中加载页面时,表单总是有错误,即使我还没有提交。为什么提交前表单有错误?
@app.route('/', methods=['GET', 'POST'])
def index():
form = ApplicationForm(request.form)
if form.is_submitted():
print "Form successfully submitted"
if form.validate():
print "valid"
print(form.errors)
if form.validate_on_submit():
return redirect('index')
return render_template('index.html', form=form)
127.0.0.1 - - [30/Nov/2016 16:54:12] "GET / HTTP/1.1" 200 -
{'department': [u'Not a valid choice'], 'email': [u'This field is required.'], 'csrf_token': ['CSRF token missing'], 'name': [u'This field is required.'], 'address': [u'This field is required.']}
这是一个get请求,所以request.form
是空的。您无条件地调用 validate
,因此您要针对空数据进行验证。因此,一切都是无效的。这就是 validate_on_submit
存在的原因:它不验证 get 请求,因为它们没有表单数据。
删除 if form.validate()
块。
form.errors
仅在验证后填充,因此将其移至 validate_on_submit
块下方,否则它将始终显示为空。
另外,你不需要传request.form
,Flask-WTF会在表单提交后自动传
我有一个带有 Flask-WTF 表单的 Flask 视图。当我在浏览器中加载页面时,表单总是有错误,即使我还没有提交。为什么提交前表单有错误?
@app.route('/', methods=['GET', 'POST'])
def index():
form = ApplicationForm(request.form)
if form.is_submitted():
print "Form successfully submitted"
if form.validate():
print "valid"
print(form.errors)
if form.validate_on_submit():
return redirect('index')
return render_template('index.html', form=form)
127.0.0.1 - - [30/Nov/2016 16:54:12] "GET / HTTP/1.1" 200 -
{'department': [u'Not a valid choice'], 'email': [u'This field is required.'], 'csrf_token': ['CSRF token missing'], 'name': [u'This field is required.'], 'address': [u'This field is required.']}
这是一个get请求,所以request.form
是空的。您无条件地调用 validate
,因此您要针对空数据进行验证。因此,一切都是无效的。这就是 validate_on_submit
存在的原因:它不验证 get 请求,因为它们没有表单数据。
删除 if form.validate()
块。
form.errors
仅在验证后填充,因此将其移至 validate_on_submit
块下方,否则它将始终显示为空。
另外,你不需要传request.form
,Flask-WTF会在表单提交后自动传