Форма 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

Когда я ввожу электронное письмо, такое как blah, оно должно завершиться ошибкой из-за отсутствия "@" (что должно вызвать ошибку ValidationError), как указано в

https://github.com/django/django/blob/master/django/core/validators.py (строка 105)

Я не знаю, что я делаю неправильно. На самом деле, даже если я не ввожу адрес электронной почты, в нем даже не указано, что поле обязательно для заполнения.


person Jared Joke    schedule 23.09.2013    source источник
comment
Как вы отображаете форму в своем шаблоне? Добавьте операторы печати или журнала, чтобы проверить, что содержит request.POST.   -  person Alasdair    schedule 24.09.2013


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

person Ricola3D    schedule 23.09.2013