код такой:
def register(request):
if request.method == 'POST':
print "request.POST %s"%request.POST
form = UserCreationForm(request.POST)
try:
if form.is_valid():
new_user = form.save()
return HttpResponseRedirect("/accounts/login/")
else:
return HttpResponseRedirect("/accounts/register/")
except:
return HttpResponseRedirect("/accounts/register/")
else:
form = UserCreationForm()
return render_to_response("registration/register.html", {
'form' : form
})
в случае ошибок:
1) вводится логин уже зарегистрированного пользователя;
2) password1 и password2 не равны;
переадресовывает на /accounts/register/, но никаких ошибок не выдает.
Как отловить исключения
raise forms.ValidationError(_(“The two password fields didn't match.”))
и
forms.ValidationError(_(“A user with that username already exists.”))
в этому случае передать ошибки используя переменные form.username.errors , form.password1.errors , form.password2.errors в форму UserCreationForm ?
По документации
http://docs.djangoproject.com/en/dev/topics/forms/#using-a-form-in-a-view сказано:
“If an invalid bound form is rendered it can include inline error messages telling the user where they went wrong.”
но у меня почему то не сообщает пользователю, где он ошибается!!!
Не смог найти аналог кода для для django 1.0. данного фрагмента кода версии 0.96
forms.FormWrapper(form, data, errors)
из
return render_to_response("registration/register.html", {
'form' : forms.FormWrapper(form, data, errors)
})
Как переписать forms.FormWrapper(form, data, errors) ?
По ссылке
http://docs.djangoproject.com/en/dev/ref/forms/fields/#ref-forms-fields нашел, код
>>> name = forms.CharField(error_messages={'required': 'Please enter your name'})
>>> name.clean('')
Traceback (most recent call last):
...
ValidationError: [u'Please enter your name']
но для моей формы вызов
вызывается исключение:
AttributeError at /accounts/register/
'UserCreationForm' object has no attribute 'cleaned_data'
Request Method: POST
Request URL: http://127.0.0.1:8000/accounts/register/
Exception Type: AttributeError
Exception Value:
'UserCreationForm' object has no attribute 'cleaned_data'
Exception Location: C:\Python25\lib\site-packages\django\forms\models.py in validate_unique, line 236
Python Executable: C:\Python25\python.exe
Python Version: 2.5.2
возникает вопрос UserCreationForm - нужно дополнить методам cleaned? чтобы отображались ошибки?