问题
is there a way i could send a form's (css) class from python? For example:
class Company(Form):
companyName = TextField('Company Name', [validators.Length(min=3, max = 60)])
This renders a simple text field, but i want that text field to have the css class of .companyName
, is that possible directly from python?
I know that i can put a id="companyName"
directly from python, but not class.
Help.
Update:
I tried class_="companyName"
and it did not work, i got:
__init__() got an unexpected keyword argument '_class'
回答1:
WTForms does not allow you to set display options (such as class name) in the field initialization. However, there are several ways to get around this:
If all of your fields should include a class name as well as an ID then just pass in each field's short_name to it when you render it:
<dl> {% for field in form %} <dt>{{field.label}}</dt> <dd>{{field(class_=field.short_name)}}</dd> {% endfor %} </dl>
Create a custom widget mixin that provides the class name:
from wtforms.fields import StringField from wtforms.widgets import TextInput class 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 example class ClassedTextInput(ClassedWidgetMixin, TextInput): pass class Company(Form): company_name = StringField('Company Name', widget=ClassedTextInput)
回答2:
Alternatively you can add the class in your template like this for jinja2:
{{ form.name(size=20, class_='input-small') }}
回答3:
Use render_kw
if using WTForms >= 2.1 :
submit = SubmitField(u'Block Submit Buttom', render_kw={"class": "btn btn-primary btn-block"})
回答4:
In your template, try it
{{ form.companyName( **{'class': 'companyName'} ) }}
来源:https://stackoverflow.com/questions/11309779/wtforms-add-a-class-to-a-form-dynamically