在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

好的,但是不基于模型表单的表单呢?希望它也适用于常规表单。