Django输入元素错误CSS类
我想知道当表单验证失败时,如何给输入框添加 .error 类(到注册应用)。
5 个回答
26
现在变得简单了——这是Django 1.2的新功能
只需要在表单类上添加一个属性,你就可以开始使用了。这个功能在文档中有提到,标记为“1.2的新特性”,你可以在 django.forms.forms.BoundField.css_classes
找到这个神奇的地方。这里有一个 API参考,还有一个例子:
class MyForm(forms.Form):
required_css_class = "required"
error_css_class = "error"
33
如果你想把错误的CSS样式应用到表单输入框上(而不是它们的容器),你可以根据下面的这个类来创建你的表单类:
class StyledErrorForm(forms.Form):
def is_valid(self):
result = super().is_valid()
# loop on *all* fields if key '__all__' found else only on errors:
for x in (self.fields if '__all__' in self.errors else self.errors):
attrs = self.fields[x].widget.attrs
attrs.update({'class': attrs.get('class', '') + ' is-invalid'})
return result
6
这可以完全通过你的模板来实现。
你需要为每个想要测试的表单字段构建一个表单模板,你可以参考下面的例子:
<input type="text" class="reg-txt{% if form.fieldname.errors %} errors{% endif %}"/>
这样你就可以提供你想要的界面,而不需要修改视图和Django表单的代码。