经过一番搜索,我发现可以使用以下代码在 web.py 中实例化一个 WTForms 对象:
form = my_form(**web.input())
web.input() 返回一个“类似字典”的 web.storage 对象,但没有双星号 WTForms 会引发异常:
TypeError: formdata should be a multidict-type wrapper that supports the 'getlist' method
从 Python 文档中,我了解到这两个星号用于解压缩命名参数的字典。也就是说,我仍然对到底发生了什么感到有些困惑。是什么让 web.input() 返回的 web.storage 对象“类似于字典”足以被 ** 解包,但又不够“类似于字典”以至于可以按原样传递给 WTForms 构造函数?
我知道这是一个非常基本的问题,但是任何可以帮助新手程序员的建议都将不胜感激!