Django EmailValidator验证尾随点

时间:2019-01-29 06:55:01

标签: django email-validation django-1.9

我正在使用Django 1.9,EmailValidator似乎正在验证电子邮件ID中的尾随点。

faulty_email = 'sid@h.in.'

user.email = faulty_email
user.save()

即使email是具有EmailField的{​​{1}},上面的代码也可以顺利运行。奇怪的是,当我手动运行验证时,它抛出了EmailValidator

ValidationError

有人知道这个问题是什么吗?

1 个答案:

答案 0 :(得分:2)

save()模型时,您只是在告诉Django将对象提交到数据库。保存期间无法验证。如果字段的格式不是数据库期望的格式,但是EmailField只是数据库中的一个字符字段,则会引发数据库异常。保存之前,您应该始终validate your models

user.email = faulty_email
try:
    user.full_clean()
except ValidationError as e:
    print(e)
else:
    user.save()

使用ModelForm时,首先验证表单(选中form.is_valid()),然后保存。