Django - 更改字段验证消息 [英] Django - change field validation message

查看:23
本文介绍了Django - 更改字段验证消息的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的时事通讯表单中有一个电子邮件字段,如下所示:

I have an email field in my Newsletter form that looks like this:

class NewsletterForm(forms.ModelForm):

    email = forms.EmailField(widget=forms.EmailInput(attrs={
        'autocomplete': 'off',
        'class': 'form-control',
        'placeholder': _('seuemail@email.com'),
        'required': 'required'
    }))

    class Meta:
        model = Newsletter
        fields = ['email', ]

我的表单可以正常工作,但是当我输入ahasudah@ahs"而不带域名的 DOT 时,我收到此错误输入有效的电子邮件地址"

My form is working, but when I type "ahasudah@ahs" without a DOT for the domain name, I get this error "Enter a valid email address"

这是哪里?

我刚刚检查了原始来源,但找不到可以像其他字段一样覆盖的错误消息.

I just checked the original source and I couldn't find an error message to override like other fields.

https://github.com/django/django/blob/master/django/forms/fields.py#L523

任何想法如何覆盖此消息?

Any ideas how to override this message?

推荐答案

事实上,你可以在两个不同的层次上用两种不同的方式来做到这一点:

In fact you can do this in two different ways in two different level:

  1. 您可以在表单验证级别执行此操作:

class NewsletterForm(forms.ModelForm):

    email = forms.EmailField(
      widget=forms.EmailInput(attrs={
        'autocomplete': 'off',
        'class': 'form-control',
        'placeholder': _('seuemail@email.com'),
        'required': 'required'
      }),
      error_messages={'invalid': 'your custom error message'}
    )

    class Meta:
        model = Newsletter
        fields = ['email', ]

  1. 模型层面的第二种方式:

2.1.你可以做同样的形式:

2.1. you can do the same as in the form:

    email = models.EmailField(error_messages={'invalid':"you custom error message"})

2.2.或者您使用 django 内置验证器:

2.2. or you use django built-in Validators:

   from django.core.validators import EmailValidator

   email = models.EmailField(validators=[EmailValidator(message="your custom message")]) # in you model class

这篇关于Django - 更改字段验证消息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆