python - Flask-WTF 表单在 GET 请求期间出现错误

标签 python flask wtforms flask-wtforms

我有一个带有 Flask-WTF 表单的 Flask View 。当我在浏览器中加载页面时,表单总是有错误,即使我还没有提交它。为什么表单在提交之前就出现错误?

@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() block 。

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

<小时/>

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

关于python - Flask-WTF 表单在 GET 请求期间出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40894051/

相关文章:

javascript - WTForms Ajax 验证失败

javascript - 在 odoo 中添加计数器按钮以将字段值更新 1

python - 在 docker 容器内的 virtualenv 中运行 django 应用程序的目的是什么?

python - 以天为单位的日期时间差异的高性能计算

python - 类型错误 : 'bool' object is not callable g. user.is_authenticated()

python - wtforms 在验证表单后引发验证错误

python - 无法使用Interceptty或slsnif嗅探通过串口发送的数据

python - 多个 heroku 应用程序,不同的端点,而不是子域

python - Flask-Appbuilder 根据用户更改默认登陆页面

python - Flask 和 WTForms - 如何让 wtforms 刷新选择的数据