8

WTForms を使用してテーブルにフォームをレンダリングしたいと考えています。TableWidgetがそのトリックを行うようですが、これを機能させる唯一の方法は次のとおりです。

from wtforms import Form, TextField, widgets

class User(Form):
    user = TextField('User')
    email = TextField('Password')

    widget = widgets.TableWidget(with_table_tag=False)

user = User()
print user.widget(user)

これは奇妙に思えます (そのprint user.widget(user)部分) ドキュメントによると、私は次のように言うことができるはずです:

class User(Form):
    user = TextField('User', widget=widgets.TableWidget)
    email = TextField('Password', widget=widgets.TableWidget)

user = User()
for form_field in user:
    print form_field

ただし、これは戻りますTypeError: __str__ returned non-string (type TableWidget)

ユーザーを置き換えると、次のメールが送信されます。

user = TextField('User')
email = TextField('Password')

もちろん、WTForms レンダリングは期待どおりに機能します。

これはどのように作動しますか?

4

1 に答える 1