gpt4 book ai didi

python - Django 表单验证错误被重复

转载 作者:太空宇宙 更新时间:2023-11-04 10:31:28 29 4
gpt4 key购买 nike

我在 django 中有以下形式:

class UserEmailRegistrationForm(forms.Form):
password = forms.PasswordField(max_length=32, label=_('Password'),
validators=[validators.validate_password])
email = forms.EmailField(label=_('Email'),
validators=[validators.validate_email])
first_name = forms.CharField(max_length=35, label=_('First name'),
validators=[validators.validate_name])
last_name = forms.CharField(max_length=35, label=_('Last name'),
validators=[validators.validate_name])

大多数验证器都是自定义的,但是 validate_email 是在 django.core.validators 中看到的。另外,这是我观点的相关部分:

form = UserEmailRegistrationForm(PUT)       
# Validate incoming data
if not form.is_valid():
return HttpResponse(form.errors.as_json(),
content_type='application/json', status=422)

所有验证器都工作正常,但是当我传递一个无效的电子邮件地址时,我在 form.errors 中得到两次 Enter a valid email address.。这是我得到的回复:

{"email": [{"message": "Enter a valid email address.", "code": "invalid"}, {"message": "Enter a valid email address.", "code": "invalid"}]}

可能是什么原因造成的,我该如何解决?

最佳答案

调试/查看发生了什么。在您的 IDE 中单击 EmailField 并遵循层次结构...

1.你的代码:

email = forms.EmailField(label=_('Email'), 
validators=[validators.validate_email])

2.电子邮件字段:

class EmailField(CharField):
widget = EmailInput
default_validators = [validators.validate_email]

3.CharField/没什么有趣的。

class CharField(Field): ...

4.Field.__init__(...):

...
self.validators = self.default_validators + validators
super(Field, self).__init__()

简而言之,您使用了两次 validate_email。

关于python - Django 表单验证错误被重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26228224/

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