我正在使用Django 1.9,EmailValidator
似乎正在验证电子邮件ID中的尾随点。
faulty_email = 'sid@h.in.'
user.email = faulty_email
user.save()
即使email
是具有EmailField
的{{1}},上面的代码也可以顺利运行。奇怪的是,当我手动运行验证时,它抛出了EmailValidator
。
ValidationError
有人知道这个问题是什么吗?
答案 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()
),然后保存。