我想使用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渲染按预期工作。
这是如何运作的?
答案 0 :(得分:1)
在文档中,它说明了以下关于TableWidget
将字段列表呈现为一组具有th / td对的表行。
您将其与单个字段而非字段列表相关联。如果查看代码,__call__
的{{1}}方法需要一个名为TableWidget
的参数,但为了生成html字符串,它会将其视为field
。