django输入元素错误css类

时间:2010-02-04 01:30:26

标签: python django validation django-forms

我想知道在表单验证失败时如何将.error类添加到输入元素(to registration app)。

5 个答案:

答案 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

执行此操作