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

1

在文档中它说以下关于TableWidget

将字段列表呈现为具有 th/td 对的一组表行。

您将其与单个字段而不是字段列表相关联。如果您查看代码,该__call__方法TableWidget期望调用一个参数,field但它会将其视为iterable生成 html 字符串的目的。

于 2014-05-24T18:42:55.327 回答