确实,name@mail.56 电子邮件是 django EmailValidator 的有效电子邮件,看不到错误:
>>> from django.core.validators import validate_email
>>> validate_email("name@mail.56")
>>>
Django (1.5.1) 使用以下正则表达式来验证电子邮件地址:
r"(^[-!#$%&'*+/=?^_`{}|~0-9A-Z]+(\.[-!#$%&'*+/=?^_`{}|~0-9A-Z]+)*" # dot-atom
# quoted-string, see also https://www.rfc-editor.org/rfc/rfc2822#section-3.2.5
r'|^"([\001-\010\013\014\016-\037!#-\[\]-\177]|\\[\001-\011\013\014\016-\177])*"'
r')@((?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+(?:[A-Z]{2,6}\.?|[A-Z0-9-]{2,}\.?)$)' # domain
r'|\[(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}\]$'
它实际上遵循RFC2822 标准。
如果您想让name@mail.56在验证过程中失败,您可以创建自己的验证器,并将其添加到带有内置validate_email验证器的EmailField验证器中,如下所示:
from django.core.validators import validate_email
from django.core.exceptions import ValidationError
def custom_validate_email(value):
if <custom_check>:
raise ValidationError('Email format is incorrect')
...
email = models.EmailField(max_length=254, blank=False, unique=True, validators=[validate_email, custom_validate_email)
而且,仅供参考,您可以随时在 django ticket system 提交工单或在 django IRC 频道 (irc://irc.freenode.net/django) 上询问问题。
另请参阅:Writing validators。
希望对您有所帮助。