Форма Django не вызывает 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
Когда я вхожу в электронное письмо, такое как бла, оно должно перестать работать из-за отсутствия символа "@" (который должен вызывать ValidationError), как указано в
https://github.com/django/django/blob/master/django/core/validators.py(строка 105)
Я не знаю, что я делаю не так. На самом деле, даже если я ввожу не по электронной почте, он даже не утверждает, что поле является обязательным
1 ответ
Объект формы пытается / исключает ошибки проверки. Если вы хотите отобразить форму с ее ошибками, вам нужно сделать:
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 }}
отобразит форму с ошибками красным цветом.