我正在使用wtforms(和flask)生成动态表单。 我想向正在生成的字段中添加一些自定义的CSS类,但是到目前为止,我一直无法这样做。 使用在这里找到的答案,我试图使用自定义窗口小部件来添加此功能。 它的实现方式与该问题的答案几乎完全相同:
class ClassedWidgetMixin(object):
"""Adds the field's name as a class.
(when subclassed with any WTForms Field type).
"""
def __init__(self, *args, **kwargs):
print 'got to classed widget'
super(ClassedWidgetMixin, self).__init__(*args, **kwargs)
def __call__(self, field, **kwargs):
print 'got to call'
c = kwargs.pop('class', '') or kwargs.pop('class_', '')
# kwargs['class'] = u'%s %s' % (field.name, c)
kwargs['class'] = u'%s %s' % ('testclass', c)
return super(ClassedWidgetMixin, self).__call__(field, **kwargs)
class ClassedTextField(TextField, ClassedWidgetMixin):
print 'got to classed text field'
在View中,我这样做是为了创建字段(ClassedTextField是从表单导入的,而f是基本表单的实例):
f.test_field = forms.ClassedTextField('Test Name')
表单的其余部分均已正确创建,但此jinja:
{{f.test_field}}
产生以下输出(无类):
任何提示都很好,谢谢。