Django 1.8 EmailField现在接受无效的电子邮件地址

时间:2015-04-28 09:22:23

标签: python django django-models

像这样使用Django 1.8模型EmailField ......

email = models.EmailField(verbose_name='email address', max_length=254, unique=True, db_index=True)

...允许输入无效的电子邮件。例如,以下内容会在错误...

时创建有效用户
  

用户(email =“number_six @ caprica”,密码=“xyz”)

但是,如果我在Django中测试验证器,它会正确捕获它......

  

来自django.core.validators import validate_email   validate_email( “number_six @卡布里卡”)

我得到了正确的Enter a valid email address.回复。

最近怎么回事? EmailFieldvalidate_email不使用相同的正则表达式吗?为什么EmailField接受validate_email没有的无效电子邮件地址?

1 个答案:

答案 0 :(得分:2)

这些不是无效的电子邮件地址,浏览器也会在电子邮件类型的输入中接受这些地址。

me@localhost例如是有效的电子邮件地址。

本地域名不需要TLD,这就是原因。

编辑:虽然这些是有效的电子邮件地址,但Django不接受它们。 EmailField确实使用validate_email验证程序。

您的问题是必须使用full_clean方法手动运行模型实例验证。有关详细信息,请参阅https://docs.djangoproject.com/en/1.8/ref/models/instances/#validating-objects