Форум сайта python.su
qmanНет, их вызывать не надо.
но по доке понял что для проверки правильности введенных данных необходимо вызвать методы
form.clean_username()
form.clean_password2()
qmanна “/accounts/register/” перенаправляет?
но почему то сообщений об ошибке не выдает.
qmanв случае ошибки, до кода try: просто не доходит выполнение.
подскажите пожалуйста в чем ошибаюсь.
Офлайн
Daevaornподскажите
Нет, их вызывать не надо.
form.clean_username()
form.clean_password2()
form.is_valid()
DaevaornСтранно и удивительно , но почему то нет! То есть в любом случае перенаправляет на форму ввода пароля.
на “/accounts/register/” перенаправляет?
Отредактировано (Ноя. 11, 2008 18:42:15)
Офлайн
код такой:
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
})
forms.FormWrapper(form, data, errors)
return render_to_response("registration/register.html", {
'form' : forms.FormWrapper(form, data, errors)
})
>>> name = forms.CharField(error_messages={'required': 'Please enter your name'})
>>> name.clean('')
Traceback (most recent call last):
...
ValidationError: [u'Please enter your name']
form.clean('')
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
Отредактировано (Ноя. 12, 2008 05:43:21)
Офлайн
qmanПрочтите внимателней свой же код:
в случае ошибок:
1) вводится логин уже зарегистрированного пользователя;
2) password1 и password2 не равны;
переадресовывает на /accounts/register/, но никаких ошибок не выдает.
if form.is_valid():
new_user = form.save()
return HttpResponseRedirect("/accounts/login/")
else:
return HttpResponseRedirect("/accounts/register/")
qmanЧитайте документацию. Там всё подробно описано и с примерами.
Как отловить исключения
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 ?
qmanЧитайте документацию и свой код. Ищите различия.
но у меня почему то не сообщает пользователю, где он ошибается!!!
qmanОпять-таки читайте внимательней документацию и свой же код.
По ссылке http://docs.djangoproject.com/en/dev/re … rms-fields нашел, код
Офлайн
Daevaornхотел чтобы в случае is_valid() == False броузер отобразил /accounts/register/ c сообщением о необходимости ввести - неверно введенные поля.
Код:
if form.is_valid():
new_user = form.save()
return HttpResponseRedirect(“/accounts/login/”)
else:
return HttpResponseRedirect(“/accounts/register/”)
Что будет есть is_valid() == False?
if form.is_valid():
new_user = form.save()
return HttpResponseRedirect("/accounts/login/")
else:
print "form is not valid"
print form.errors
return render_to_response("registration/register.html", {'form' : form})
Офлайн
qmanКак выглядит шаблон?
Дайте еще напутствия куда читать.
Офлайн
вывод ошибок работает так:
{% block content %}
<h1>Регистрация пользователя</h1>
<form action="." method="post">
{% if form.errors %}
<p class="error">Пожалуйста исправьте нижеприведённые ошибки.</p>
{{ form.errors }}
{% endif %}
<label for="id_username">Логин:</label> {{ form.username }}
<label for="id_password1">Пароль: {{ form.password1 }}
<label for="id_password2">Пароль (снова): {{ form.password2 }}
<input type="submit" value="Зарегистрировать" />
</label>
{% endblock %}
{% block content %}
<h1>Регистрация пользователя</h1>
<form action="." method="post">
{% if form.error_dict %}
<p class="error">Пожалуйста исправьте нижеприведённые ошибки.</p>
{% endif %}
{% if form.username.errors %}
{{ form.username.html_error_list }}
{% endif %}
<label for="id_username">Логин:</label> {{ form.username }}
{% if form.password1.errors %}
{{ form.password1.html_error_list }}
{% endif %}
<label for="id_password1">Пароль: {{ form.password1 }}
{% if form.password2.errors %}
{{ form.password2.html_error_list }}
{% endif %}
<label for="id_password2">Пароль (снова): {{ form.password2 }}
<input type="submit" value="Зарегистрировать" />
</label>
{% endblock %}
Офлайн
qmanСколько уже раз было сказано, что да?
поэтому вопрос - документация устарела?
Офлайн