使用 Flask-WTF 时从字典中填充 WTForms 表单 [英] Populate WTForms form from dictionary when using Flask-WTF

查看:48
本文介绍了使用 Flask-WTF 时从字典中填充 WTForms 表单的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个需要从字典中填充的 Flask-WTF 表单,我将其作为 **kwargs 传入.该表单用于使用 POST 方法访问的 Flask 路由.表单未验证,字段的值为 None.如何将数据字典传递给我的表单,然后对其进行验证?

I have a Flask-WTF form that needs to be populated from a dictionary, which I pass in as **kwargs. The form is used in a Flask route that is accessed using the POST method. The form doesn't validate, and the field's value is None. How can I pass a dictionary of data to my form and then validate it?

@app.route('/submit', methods=['POST'])
def submit():
    data = {'name': 'eee'}
    form = MyForm(**data)
    print(form.validate())  # False, name is required
    print(form.name.data)  # None

推荐答案

Flask-WTF 自动 在路由发布到时传递 request.form,如果没有明确传递数据.您需要将数据作为 MultiDict,防止自动行为.传递objdata**kwargs,只会设置默认值,即仅在没有真实数据时使用传递给表单.

Flask-WTF automatically passes request.form when the route is posted to, if no data is passed explicitly. You need to pass your data, as a MultiDict, to prevent the automatic behavior. Passing obj, data, or **kwargs, only sets the defaults, which are only used if no real data is passed to the form.

form = MyForm(MultiDict(data))

这篇关于使用 Flask-WTF 时从字典中填充 WTForms 表单的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆