【问题标题】:Flask-WTF form has errors during GET requestFlask-WTF 表单在 GET 请求期间有错误
【发布时间】:2017-04-15 02:41:08
【问题描述】:

我有一个带有 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.']}

【问题讨论】:

    标签: python flask wtforms flask-wtforms


    【解决方案1】:

    这是一个获取请求,所以request.form 为空。您无条件地调用validate,因此您正在验证空数据。因此,一切都是无效的。这就是 validate_on_submit 存在的原因:它不会验证 get 请求,因为它们没有表单数据。

    删除if form.validate() 块。

    form.errors 仅在验证后填充,因此请将其移至 validate_on_submit 块下方,否则它将始终显示为空。


    另外,你不需要传递request.form,如果表单提交,Flask-WTF会自动传递。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多