0

所以我有一个看起来像这样的表单,我知道它可以工作,因为将某些字段留空会在错误字典中提供正确的错误消息,但电子邮件似乎没有正确验证

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行)

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

4

1 回答 1

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 }}会将带有错误的表单呈现为红色。

于 2013-09-23T21:58:32.613 回答