在 django 中验证错误时将 css 类添加到字段

发布于 2024-10-14 19:23:14 字数 109 浏览 9 评论 0原文

我正在使用 Django 的 modelform,它真的很好。如果存在与其关联的验证错误,如何突出显示实际文本框(例如 border:red )。基本上我想要的是如果字段存在验证错误则添加一个类(错误)。

I am using Django's modelform and its really good. How can I highlight the actual text box (e.g. border:red ) if there is a validation error associated with it. Basically what i want is to add a class (error) if there is a validation error to a field.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

苏辞 2024-10-21 19:23:14

定义 error_css_class 怎么样?
http://docs .djangoproject.com/en/stable/ref/forms/api/#styling-required-or-erroneous-form-rows

class MyForm(ModelForm):
    error_css_class = 'error'

What about defining error_css_class?
http://docs.djangoproject.com/en/stable/ref/forms/api/#styling-required-or-erroneous-form-rows?

class MyForm(ModelForm):
    error_css_class = 'error'
一生独一 2024-10-21 19:23:14

来回答原来的问题。

您可以将所需的类添加到视图中提交表单并执行 form.is_valid() 检查的字段。不是最漂亮的,但它会起作用。

def submit_form(request):
    if request.method = 'POST':
        if. form.is_valid():
            # Do something with clean form data
            pass
        else:
            # Append css class to every field that contains errors.
            for field in form.errors:
                form[field].field.widget.attrs['class'] += ' my-css-class'
    return render(request, submit_form.html, {
        'form': form
    })

To answer the original question.

You can add the desired class to the field in the view to where you are submitting your form and doing your form.is_valid() check. Not the prettiest but it will work.

def submit_form(request):
    if request.method = 'POST':
        if. form.is_valid():
            # Do something with clean form data
            pass
        else:
            # Append css class to every field that contains errors.
            for field in form.errors:
                form[field].field.widget.attrs['class'] += ' my-css-class'
    return render(request, submit_form.html, {
        'form': form
    })
烧了回忆取暖 2024-10-21 19:23:14

扩展 errx 的答案。

添加 CSS

.error input, .error select {
    border: 2px red solid;
}

以专门突出显示该字段

Expanding upon errx's answer.

Add the CSS

.error input, .error select {
    border: 2px red solid;
}

to specifically highlight the field

青芜 2024-10-21 19:23:14

试试这个?

self.fields['field_you_want_to_add_error'].widget.attrs['class'] = "error"

Try this?

self.fields['field_you_want_to_add_error'].widget.attrs['class'] = "error"
不气馁 2024-10-21 19:23:14

模板 :

<div style="color:red">{{ userForm.short_description.errors.as_text  }}</div>

template :

<div style="color:red">{{ userForm.short_description.errors.as_text  }}</div>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文