WTForms不允许你在字段初始化中设置显示选项(例如类名)。但是,有几种方法可以解决此问题:
如果你所有的字段都应包含一个类名和一个ID,则在short_name呈现它时只需将每个字段的值传递给它即可:
<dl>{% for field in form %}<dt>{{field.label}}</dt><dd>{{field(class_=field.short_name)}}</dd>{% endfor %}</dl>创建一个提供类名称的自定义窗口小部件混合:
from wtforms.fields import StringFieldfrom wtforms.widgets import TextInputclass ClassedWidgetMixin(object): """Adds the field's name as a class when subclassed with any WTForms Field type. Has not been tested - may not work.""" def __init__(self, *args, **kwargs): super(ClassedWidgetMixin, self).__init__(*args, **kwargs) def __call__(self, field, **kwargs): c = kwargs.pop('class', '') or kwargs.pop('class_', '') kwargs['class'] = u'%s %s' % (field.short_name, c) return super(ClassedWidgetMixin, self).__call__(field, **kwargs)# An exampleclass ClassedTextInput(ClassedWidgetMixin, TextInput): passclass Company(Form): company_name = StringField('Company Name', widget=ClassedTextInput)


