如何预先填充Python Formish表单?

Kir*_*dda 7 python formish

如何预先填写Formish表格?根据文档显而易见的方法似乎并不正确.使用提供的示例之一:

import formish, schemaish
structure = schemaish.Structure()
structure.add( 'a', schemaish.String() )
structure.add( 'b', schemaish.Integer() )
schema = schemaish.Structure()
schema.add( 'myStruct', structure )
form = formish.Form(schema, 'form')
Run Code Online (Sandbox Code Playgroud)

如果我们传递一个有效的请求对象:

form.validate(request)
Run Code Online (Sandbox Code Playgroud)

输出是这样的结构:

{'myStruct': {'a': 'value', 'b': 0 }}
Run Code Online (Sandbox Code Playgroud)

但是,使用defaults此预填充表单需要:

form.defaults = {'myStruct.a': 'value', 'myStruct.b': 0}
Run Code Online (Sandbox Code Playgroud)

dottedish包有一个DottedDict可以将嵌套的dict转换为虚线dict的对象,但这种不对称似乎并不正确.有一个更好的方法吗?

byt*_*ian 1

不,不需要使用点式字典,您可以轻松使用验证后样式字典来预填充表单:

form.defaults={'myStruct': {'a': None, 'b': 'default_value'}}
Run Code Online (Sandbox Code Playgroud)

也许有旧版本的formish,尝试更新库。