我想知道在表单验证失败时如何将.error类添加到输入元素(to registration app)。
答案 0 :(得分:27)
如果要将错误CSS类放置为表单输入窗口小部件(而不是其容器),可以从以下窗体派生窗体类:
class StyledErrorForm(forms.Form):
def is_valid(self):
ret = forms.Form.is_valid(self)
for f in self.errors:
self.fields[f].widget.attrs.update({'class': self.fields[f].widget.attrs.get('class', '') + ' error'})
return ret
答案 1 :(得分:26)
现在很简单 - Django 1.2中的新功能
只需在表单类上添加一个属性&你很高兴。这个功能在“1.2中的新内容”注释中的文档中提到,但您可以在django.forms.forms.BoundField.css_classes
找到魔法,这里是API reference,并举例说明:
class MyForm(forms.Form):
required_css_class = "required"
error_css_class = "error"
答案 2 :(得分:6)
这可以通过您的模板完成。
您为要测试的每个表单域构建表单模板,您可以使用以下示例构造
<input type="text" class="reg-txt{% if form.fieldname.errors %} errors{% endif %}"/>
这使您可以在不修改视图的情况下提供所需的界面。 django表单代码。
答案 3 :(得分:1)
使用自定义模板......
个人从来没有运气使用内置的Django错误分类解决方案,而且,我喜欢使用内置的'striptags'模板过滤器来处理错误,摆脱所有我无法弄清楚的html列表内容无论如何,如何很好地渲染。
我使用以下自定义模板将它们归类为'error_id'。
@register.filter(is_safe=True)
@stringfilter
def error_id(value):
if value=='':
return ''
else:
return r'<span class="error_id">'+value+'</span>'
使用以下方法渲染模板中的各个错误:
{{ form.my_field.errors|striptags|error_id}}
使用以下内容渲染整个表单:
<table border="1" cellpadding="5px" align="center">
{% for field in form.visible_fields %}
<tr>
<td> {{ field.label_tag }}: </td>
<td> {{ field }} </td>
<td> {{ field.errors|striptags|error_id }} </td>
</tr>
{% endfor %}
</table>
答案 4 :(得分:0)
(迟到总比没有好)
您应该可以使用Django Uni Form
执行此操作