Django表单错误消息的样式

3
我想让django表单默认的错误信息显示为红色和加粗。例如,将"This field is required"显示为红色和加粗。我看到了error_css_class = 'error',但它没有起作用。 https://docs.djangoproject.com/en/1.5//ref/forms/api/#django.forms.Form.error_css_class 谢谢! 这是我的models.py文件。
class RegiForm(forms.Form):
    error_css_class = 'error'
    DateInput = partial(forms.DateInput, {'class': 'datepicker'})
    email = forms.EmailField(max_length=75)
    first_name = forms.CharField(max_length=25)
    last_name = forms.CharField(max_length=25)
    address = forms.CharField(max_length=200)

这是我的模板:
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <title>RegistrationForm</title>
    </head>
    <body>
        <h1>Registration Form</h1>
        <form action="/login/regi/" method="POST">
            {% csrf_token %}
            {{ form.as_p }}
            <input type="submit" value="Submit" />
        </form>
    </body>
</html>

什么出了问题?你写了一些CSS来为错误类设置样式吗?Django会将错误类添加到具有错误的字段中,但它不会自动为您设置表单样式。 - Brandon Taylor
目前,我已经让表格正常工作了。如果我在必填字段中没有输入任何内容,则会跳出一个带有项目符号的错误消息,例如“此字段为必填项”。我只想将此错误消息加粗并标记为红色。我没有为错误类添加任何 CSS 样式。 - Penocky
这就是问题所在。你需要编写一个 CSS 规则来进行样式设置,Django 不会为你提供任何样式。 - Brandon Taylor
4个回答

11

只需添加以下 CSS 代码,即可更改错误消息的颜色:
.errorlist { color: red; }
若要更改字段边框颜色,则可以使用以下代码
.error input, .error select { border: 2px red solid; }


1
这个奇怪的东西不起作用。 - Harlin

6

我知道这是一个老问题,但作为初学者,我需要它。

您可以扩展位于

django.forms.utils

中的ErrorList类以根据您的需求进行样式设置。在我的情况下,我想要将其设置为

和Bootstrap警报。

因此,我在forms.py中执行了以下操作:

class DivErrorList(ErrorList):
    def __str__(self):
        return self.as_divs()

    def as_divs(self):
        if not self:
            return ''
        return '<div class="errorlist">%s</div>' % ''.join(['<div class="error alert alert-danger mt-1">%s</div>' % e for e in self])

views.py中:

form = AddToCartForm(error_class=DivErrorList)

请参阅文档:customizing-the-error-list-format


5

请在源代码浏览器中检查类名。您可以尝试像这样更改类名:

class MyForm(forms.Form):
    error_css_class = "error"

这并没有回答问题。 - Brandon Taylor
1
它确实如此。查看源代码将有助于@Penocky了解Django生成的输入结构和错误消息,以便添加样式。 - adrien
如果@Penocky一开始没有编写样式来设置错误消息的样式,那么更改类也不能设置错误消息的样式,这就是问题所在。 - Brandon Taylor
我同意,这只是为了帮助他理解的解决方案。但对我来说,问题出在CSS方面。 - adrien
我有点明白你的意思。只是想知道我应该如何为表单添加CSS?我尝试在模板中直接链接CSS,但没有效果。我应该修改errorlist还是参考一些教程?谢谢! - Penocky
我在HTML中添加了CSS,现在已经修复。谢谢! - Penocky

5

要更改error_message的样式:

第一步:检查error_message元素,然后复制其类

第二步:添加所需的样式...

在我的情况下... error_message的类为help-block。

<style>
.help-block{color:red;
            font-weight:bold;
}
</style>

请不要忘记将它放在您的 {% block content %} 或 {% block body %} 中,如果您扩展了 base.html,否则... 它将无法正常工作。

第三步:就这样 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接