我需要支持 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 现在是有效的顶级域名。)
如何告知验证者接受该域名? (最好是其他人喜欢它。)
谢谢!
答案 0 :(得分:1)
我建议您继承EmailField
,并将其default_validators
集替换为也支持新顶级顶级域名的自定义验证程序。
默认验证器是django.core.validators.validate_email
,它反过来指向EmailValidator
的实例,显然你也必须子类化,并提供这个子类的实例作为{{中的唯一项目1}} default_validators
子类的属性。
您可能希望了解EmailValidator
的较新实现,它不仅支持长度为2到63个字符的TLD,还提供允许您按自定义注入的whitelist
参数有效域名列表。
或者,当然,如果你更喜欢升级到更新的Django版本。我不确定何时添加了对更长TLD的支持,但我确定您可以通过查看发布日志或浏览来源来解决这个问题。