【问题标题】:Style Django form error message样式 Django 表单错误消息
【发布时间】:2015-05-28 04:32:57
【问题描述】:

我正在尝试将 django form defa 错误设置为红色和粗体。例如,将“此字段为必填项”设为红色和粗体。我看到了 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 会将错误类添加到有错误的字段中,但它不会自动为您设置表单样式。
  • 目前,我可以让表单正常工作,如果我没有在表单的必填字段中输入内容,则会跳出一条错误消息,其中包含诸如“此字段为必填项”之类的要点”。只是想让这个错误信息变成粗体和红色。我没有在错误类中添加任何 CSS。
  • 这就是问题所在。你需要编写一个 css 规则来做样式 Django 不会为你做任何样式。

标签: django django-forms django-templates


【解决方案1】:

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

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

【讨论】:

  • 这没有回答问题。
  • 确实如此。查看源代码将有助于@Penocky 了解 django 的输入结构和错误消息,以便为其添加样式。
  • 如果 @Penocky 没有编写任何 CSS 来设置错误消息的样式,则更改类不会设置错误消息的样式,这就是问题所在。
  • 我同意,这只是帮助他理解的解决方案。但对我来说,问题来自 CSS 方面
  • 我有点明白你的意思。只是想知道我应该如何为表单添加 css?我尝试直接在我的模板中链接一个 css 但不起作用。我应该为此修改错误列表或任何教程吗?谢谢!
【解决方案2】:

只需添加此CSS 即可更改错误消息颜色:
.errorlist { color: red; }
或者如果您想更改字段边框颜色,那么
.error input, .error select { border: 2px red solid; }

【讨论】:

    【解决方案3】:

    改变error_message的样式:

    第一个:检查error_message的元素,然后复制它的类

    2nd:添加你想要的样式...

    就我而言.... error_message 的类是 help-block

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

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

    第三个:就是这样:)

    【讨论】:

      【解决方案4】:

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

      您可以在

      中扩展ErrorList

      django.forms.utils

      根据需要设置样式。 就我而言,我希望它作为 div 和 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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-02-15
        • 2016-09-04
        • 1970-01-01
        • 2013-09-27
        • 2018-06-26
        • 2012-10-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多