最佳答案
我正在使用 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'
在视图中,我这样做是为了创建字段(ClassedTextField 是从表单导入的,f 是基本表单的一个实例) :
f.test_field = forms.ClassedTextField('Test Name')
形式的其余部分是正确创建的,但是这个忍者:
{{f.test_field}}
产生这个输出(没有类) :
<input id="test_field" name="test_field" type="text" value="">
任何建议都行,谢谢。