少し検索した後、次のコードを使用して web.py で WTForms オブジェクトをインスタンス化できることがわかりました。
form = my_form(**web.input())
web.input() は「辞書のような」 web.storage オブジェクトを返しますが、2 つのアスタリスクがない場合、WTForms は例外を発生させます。
TypeError: formdata should be a multidict-type wrapper that supports the 'getlist' method
Python のドキュメントから、名前付き引数の辞書をアンパックするために 2 つのアスタリスクが使用されていることがわかります。とは言っても、正確に何が起こっているのかについては、まだ少し混乱しています。web.input() によって返される web.storage オブジェクトが、** によってアンパックできるほど「辞書のよう」であるのに、WTForms コンストラクターにそのまま渡すことができるほど「辞書のよう」ではないのはなぜですか?
これが非常に基本的な質問であることは承知していますが、初心者のプログラマーに役立つアドバイスをいただければ幸いです。