Django templates Django将类添加到表单<;输入..>;领域

Django templates Django将类添加到表单<;输入..>;领域,django-templates,django-forms,Django Templates,Django Forms,我们正在寻找向Django表单的字段添加CSS类属性的解决方案。我们已经看到建议将字段包装在中的建议,但该建议似乎主要适用于字段标签,而不是 如果您试图在字段周围创建边框,则此特定建议无效。在这种情况下,将应用于边界框,而不是实际的输入字段。例如.wrapper{border:1px solid#666;行高:22px;高度:22px;填充:3px 5px;宽度:205px;}将在字段周围创建一个框,而不是替换默认的边框 我们已经退回到通过应用于表单类的小部件来应用该类,但这缺乏一定程度的代码优

我们正在寻找向Django表单的
字段添加CSS类属性的解决方案。我们已经看到建议将字段包装在
中的建议,但该建议似乎主要适用于字段标签,而不是

如果您试图在
字段周围创建边框,则此特定建议无效。在这种情况下,
将应用于边界框,而不是实际的输入字段。例如
.wrapper{border:1px solid#666;行高:22px;高度:22px;填充:3px 5px;宽度:205px;}
将在字段周围创建一个框,而不是替换默认的
边框

我们已经退回到通过应用于表单类的小部件来应用该类,但这缺乏一定程度的代码优雅(并且违反了DRY)。例如,这解决了需求

class ContactUsForm(forms.Form):
    name = forms.CharField(widget=forms.TextInput(attrs={'class':'form_text'}))
当然,这将表单与CSS紧密地联系在一起。如果您试图将类属性应用于
字段,而表单是基于全新的forms.ModelForm系统,那么它会变得更加复杂

我们花了两天的大部分时间来研究这个问题(并研究Django源代码),看起来对于这个特定的问题,我们可能已经达到Django的最边缘了——但我们只是想看看StackOverflow是否有其他人有洞察

谢谢你的洞察力


最后一点意见:如果问题在于我们对CSS的理解(而不是django),那么请随意告诉我们。我们花了相当多的时间处理CSS选项,但它们似乎都不允许我们实现所需的效果——即替换默认的
边框。

您可以像这样使用子选择器:

.fieldWrapper > input {border: 1px solid #666;line-height:22px;height:22px;padding:3px 5px;width:205px;}

绝妙的解决方案!由于历史上的兼容性问题,我通常不会考虑子选择器,但如果您不介意针对现代浏览器的话,这是一个不存在的问题。谢谢你的伟大解决方案。