Django表示不会为无效的电子邮件引发ValidationError

时间:2013-09-23 20:49:41

标签: python django validation validationerror

所以我有一个看起来像这样的表单我知道它有效,因为留下一些字段空白会在错误字典中给出正确的错误消息,但电子邮件似乎没有正确验证

forms.py

class NewUserForm(Form):
    username = UsernameField(required=True)
    password = CharField(required=True, widget=PasswordInput())
    email = EmailField(required=True)

然后在 views.py 我有

form = NewUserForm(request.POST)
    if form.is_valid(): 
        # Do stuff

当我输入诸如 blah 之类的电子邮件时,如果没有“@”(应该导致ValidationError)抛出

中的说明,它将失败

https://github.com/django/django/blob/master/django/core/validators.py (第105行)

我不知道我做错了什么。事实上,即使我没有输入任何电子邮件,它也不会声明该字段是必需的

1 个答案:

答案 0 :(得分:0)

表单对象尝试/排除验证错误。如果要显示包含错误的表单,您需要执行以下操作:

form = NewUserForm(request.POST)
context = {}
if form.is_valid(): 
    # Do stuff
else:
    # "is_valid()" fills the errors and non_field_errors attributes of the form, you can render it now
    context['myform'] = form
    render_to_response('mytemplate.html', context, context_instance = RequestContext(request))

在您的模板中,{{ form }}{{ form.as_p }}{{ form.as_ul }}会将表单的错误呈现为红色。