wtform (및 플라스크)을 사용하여 동적 양식을 생성 중입니다. 내가 생성하는 필드에 사용자 정의 CSS 클래스를 추가하고 싶습니다. 그러나 지금까지는 그렇게 할 수 없었습니다. 대답을 사용하여 here을 발견했습니다.이 기능을 추가하기 위해 사용자 정의 위젯을 사용하려고했습니다. 보기에서wtform의 필드에 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')
형태의 나머지가 올바르게 작성되어 있지만 신사 :
012 :{{f.test_field}}
이 출력 (NO 클래스) 생성
<input id="test_field" name="test_field" type="text" value="">
팁을 주시면 감사하겠습니다.
[업데이트 된 코드] (http://stackoverflow.com/questions/11309779/wtforms-add-a-class-to-a-form-dynamically)를 시도해보고 도움이되는지 확인하십시오 :-) –
고맙습니다. 빠른 응답을 위해! 필자는 코드를 업데이트했고 지금과 같은 필드를 생성하고있다 :'f.test_field = forms.TextInput ('Company Name', widget = forms.ClassedTextInput)'. 그러나, 나는'TypeError : __init __()에 예기치 않은 키워드 인수 'widget'' 오류가 발생했습니다. – pheven
필드 정의에'TextInput'이 아닌'StringField'를 사용해야합니다 :-) –