Ответ 1
is_valid()
вызывает clean()
в форме автоматически. Вы используете is_valid()
в своих представлениях и clean()
в своих классах форм.
Ваша функция clean()
вернет self.cleaned_data
, которая, если вы заметите в следующем представлении, не будет обрабатываться вами как программистом.
form = myforms.SettingsForm(request.POST)
if form.is_valid():
name = form.cleaned_data['name']
#do stuff
Вам не нужно было делать clean_data = form.is_valid()
, потому что is_valid()
будет вызывать чистую и перезаписывать данные в очищаемом объекте формы. Таким образом, все в вашем блоке if form.is_valid()
будет чистым и действительным. Поле name
в вашем блоке будет дезинфицированной версией, которая не обязательно находится в request.POST
.
Обновление
Вы также можете отображать сообщения об ошибках. В clean()
, если данные формы недействительны, вы можете установить сообщение об ошибке в поле, подобное этому:
self._errors['email'] = [u'Email is already in use']
Теперь is_valid()
вернет False, поэтому в блоке else вы можете повторно отобразить страницу с вашим перезаписанным объектом формы и отобразит сообщение об ошибке, если ваш шаблон использует строку с ошибкой.