所以我有一个看起来像这样的表单我知道它有效,因为留下一些字段空白会在错误字典中给出正确的错误消息,但电子邮件似乎没有正确验证
在 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行)
我不知道我做错了什么。事实上,即使我没有输入任何电子邮件,它也不会声明该字段是必需的
答案 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 }}
会将表单的错误呈现为红色。