gpt4 book ai didi

Django EmailField 接受无效值

转载 作者:行者123 更新时间:2023-12-04 02:55:50 24 4
gpt4 key购买 nike

我目前使用默认 EmailField我的表单上的属性。我遇到的问题是表单认为是无效的电子邮件,例如 name@mail.56有效。我需要实现我自己的validators在这个领域,使其正常工作?

我的印象是:

#models.py
email = models.EmailField(max_length=254, blank=False, unique=True,
error_messages={'required': 'Please provide your email address.',
'unique': 'An account with this email exist.'},)

或者有:
#forms.py
email = forms.EmailField()

将为我处理这种类型的验证,但似乎并非如此。

最佳答案

确实,name@mail.56电子邮件是 django 的有效电子邮件 EmailValidator ,看没有错误:

>>> from django.core.validators import validate_email
>>> validate_email("name@mail.56")
>>>

Django (1.5.1) 使用以下正则表达式来验证电子邮件地址:
r"(^[-!#$%&'*+/=?^_`{}|~0-9A-Z]+(\.[-!#$%&'*+/=?^_`{}|~0-9A-Z]+)*"  # dot-atom
# quoted-string, see also http://tools.ietf.org/html/rfc2822#section-3.2.5
r'|^"([\001-\010\013\014\016-\037!#-\[\]-\177]|\\[\001-\011\013\014\016-\177])*"'
r')@((?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+(?:[A-Z]{2,6}\.?|[A-Z0-9-]{2,}\.?)$)' # domain
r'|\[(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}\]$'

它实际上遵循 RFC2822标准。

如果您想制作 name@mail.56验证失败,您可以创建自己的验证器,并将其添加到 EmailField内置验证器 validate_email验证器,像这样:
from django.core.validators import validate_email
from django.core.exceptions import ValidationError

def custom_validate_email(value):
if <custom_check>:
raise ValidationError('Email format is incorrect')
...
email = models.EmailField(max_length=254, blank=False, unique=True, validators=[validate_email, custom_validate_email)

而且,仅供引用,您可以随时在 django ticket system 中提交工单。或在 django IRC channel (irc://irc.freenode.net/django) 上询问该问题。

另见: Writing validators .

希望有帮助。

关于Django EmailField 接受无效值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18368207/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com