在Django中向*所有*InputText元素添加属性的简单方法?
我想将在Django中向*所有*InputText元素添加属性的简单方法?,django,django-forms,Django,Django Forms,我想将class=“text”添加到所有TextInput小部件中。我知道我可以补充 widgets = { 'myfield': TextInput(attrs={'class':'text'}) } 对于每一个领域,每一种形式。。。但一定有更简单的方法?我的很多表单都是基于ModelForms的,因此它会自动为我设置字段和小部件。也许你可以用一个类来对ModelForm进行子类化,该类用一个调用super\uuuuuu init\uuuuuu的类来覆盖\uu
class=“text”
添加到所有TextInput
小部件中。我知道我可以补充
widgets = {
'myfield': TextInput(attrs={'class':'text'})
}
对于每一个领域,每一种形式。。。但一定有更简单的方法?我的很多表单都是基于ModelForms的,因此它会自动为我设置字段和小部件。也许你可以用一个类来对ModelForm进行子类化,该类用一个调用super
\uuuuuu init\uuuuuu
的类来覆盖\uuuuuu init>方法,然后检查所创建对象的属性,如果它们是TextInput
的实例,则添加该属性。您可能会找到解决方案的具体机制
这就是我要探讨的。不是说这是最好或最干净的解决方案,而是说使用jQuery怎么样
$(document).ready(function(){
$('input[type=text],input[type=password]').addClass('text');
});
我假设这是一个设计文本输入样式的目标,因为IE6不理解CSS属性,这是一个基于Django的解决方案,前面已经提到过。您可以创建一个应用程序“MyForms”,并在其中设置表单模块:
# myforms/forms.py
from django import forms
class Form(forms.Form):
def __init__(self, *args, **kwargs):
super(Form, self).__init__(*args, **kwargs)
for field in self.fields:
# Turn all CharField widgets to TextInput(attrs={'class'='text'})
class ModelForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
# Same as above
然后在代码中,只需执行以下操作:
from myforms import forms
而不是
from django import forms
好的,但是不基于模型表单的表单呢?希望它也适用于常规表单。