通过电子邮件发送到django中的新顶级域名(TLD)

时间:2015-04-24 18:43:41

标签: django email-validation

我需要支持 joe@netherworld.enterprises (新批准的顶级域名之一)等电子邮件地址。我的django版本是1.4.5,而python是2.7

我的模型看起来像这样:

class Invitation(models.Model):
    email = models.EmailField(max_length=60, blank=False)

问题是验证器'EmailField'拒绝'企业',我认为因为它太长了,并且不以.com或类似的方式结束。 ( .enterprises 现在是有效的顶级域名。)

如何告知验证者接受该域名? (最好是其他人喜欢它。)

谢谢!

1 个答案:

答案 0 :(得分:1)

我建议您继承EmailField,并将其default_validators集替换为也支持新顶级顶级域名的自定义验证程序。

默认验证器是django.core.validators.validate_email,它反过来指向EmailValidator的实例,显然你也必须子类化,并提供这个子类的实例作为{{中的唯一项目1}} default_validators子类的属性。

您可能希望了解EmailValidator的较新实现,它不仅支持长度为2到63个字符的TLD,还提供允许您按自定义注入的whitelist参数有效域名列表。

或者,当然,如果你更喜欢升级到更新的Django版本。我不确定何时添加了对更长TLD的支持,但我确定您可以通过查看发布日志或浏览来源来解决这个问题。