【问题标题】:Overriding default error messages in email input widget in django在 django 中覆盖电子邮件输入小部件中的默认错误消息
【发布时间】:2014-11-27 05:28:22
【问题描述】:

我正在尝试覆盖 Django 中默认的无效电子邮件错误消息。正如 Django Doc 所说,以下代码应该可以工作,但事实并非如此。怎么调整?

class BootstrapAuthenticationForm(AuthenticationForm):
forms.Form.error_css_class = 'error'
email = forms.EmailField(max_length=254,
                            error_messages={'required': 'Please enter a valid email address.',
                                            'invalid': 'Please enter a valid email address.'},
                           widget=forms.EmailInput({
                               'required': True,
                               'class': 'form-control', 
                               'placeholder': 'E-mail address',
                               }))

而且,error_css_class 不能正常工作:根本没有变化。这个设置有什么问题?

提前致谢。

【问题讨论】:

  • 这里有个错误:widget=forms.EmailInput({..})应该是widget=forms.EmailInput(attrs={...})
  • 小部件渲染正常,所以没问题。问题是错误消息没有覆盖默认消息。
  • 好吧,我已经测试了自己,是的,它不能正常工作,而对于 Charfield,它几次都不能正常工作,我不确定,可能是我的浏览器的缓存问题。无论如何,我会建议你使用 JS 或 forms clean 方法来解决。
  • 我已更改为 attrs,但它没有按我的意思呈现。它在模板 (html) 中正确呈现,因此错误消息与 EmailField 的边界(?)很好。但我想覆盖来自 EmailInput 的错误消息 - 内联弹出错误消息。无论如何,谢谢。

标签: python django forms validation


【解决方案1】:

您可以使用 EmailValidator:

email = forms.EmailField(max_length=254, validators=[EmailValidator(message="Your message")]

【讨论】:

  • 正如我上面提到的,如果我想将模板 (html) 中的自定义错误消息呈现为 field.errors,这可以正常工作。问题是如何覆盖来自 EmailInput 小部件的默认错误消息,即内联弹出错误消息。谢谢。
猜你喜欢
  • 1970-01-01
  • 2010-12-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-21
  • 2021-08-09
  • 2015-11-06
  • 2019-01-07
  • 2023-03-31
相关资源
最近更新 更多