Форма 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 }} отобразит форму с ошибками красным цветом.

Другие вопросы по тегам