Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Кастомизированный вывод ошибки формы [RSS Feed]

#1 Янв. 3, 2009 21:30:41

romankrv
От:
Зарегистрирован: 2008-05-23
Сообщения: 513
Репутация: +  0  -
Профиль   Отправить e-mail  

Кастомизированный вывод ошибки формы

Всех с Новым Годом!

И у меня вопрос

Если такая форма :

class MyForm(forms.ModelForm):
password1 = forms.CharField(widget=forms.PasswordInput())
password2 = forms.CharField(widget=forms.PasswordInput())

def clean(self):
if 'password1' in self.cleaned_data and 'password2' in self.cleaned_data:
if self.cleaned_data['password1'] != self.cleaned_data['password2']:
raise forms.ValidationError(_(u'Пароли не совпадают.'))
return self.cleaned_data
И для ее вывода я использую кастомизированный темплэйт например так:

{{ form.password1.label_tag }}
{{ form.password1.errors }}
{{ form.password1 }}
{{ form.password1.help_text }}

то вывод {{ form.password1.errors }} не обеспечивается в случаи несовпадения паролей,
если ли же я использую в темплэйте такую запись :
{{ form }}
то в случаи несовпадения паролей выводится сообщение, заданое в def clean.

Почему так происходит и как нужно подкорректировать класс формы ?

Спасибо.

Офлайн

#2 Янв. 3, 2009 22:37:03

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Кастомизированный вывод ошибки формы

А к какому полю относится эта ошибка или не к полю? Когда ответишь на этот вопрос, тогда поймешь куда копать.



Офлайн

#3 Янв. 3, 2009 22:58:51

romankrv
От:
Зарегистрирован: 2008-05-23
Сообщения: 513
Репутация: +  0  -
Профиль   Отправить e-mail  

Кастомизированный вывод ошибки формы

Да, понял как надо поступать в таких случаях
1) при таком коде ошибка попадает в словарь ошибок

In [72]: f = MyForm({'password1':'qqqq','password2':'qqq',})

In [73]: f.errors
Out[73]: {'__all__': [u'You must type the same password each time']}
2) в коде метода задавать какую то переменную, а в темплэйте проверять ее существование и выводить блок с этой ошибкой.

правда ошибка помещается в позицию с ключем __all__ и было бы наверное более правильно создать там новый ключ, имя которого, требуемое поле, а так непонятно, при чтении этого словоря – что какое поле сгенерировало ошибку.

Правилен ли такой подход?

ps
да кастомизированный вывод формы немного конечно нагруженный то есть приходится жертвовать компактностью кода.

Отредактировано (Янв. 3, 2009 23:09:12)

Офлайн

#4 Янв. 3, 2009 23:11:00

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Кастомизированный вывод ошибки формы

Не изобретай велосипед, лучше документацию внимательно почитай: http://docs.djangoproject.com/en/dev/ref/forms/validation/



Офлайн

#5 Янв. 4, 2009 00:17:40

romankrv
От:
Зарегистрирован: 2008-05-23
Сообщения: 513
Репутация: +  0  -
Профиль   Отправить e-mail  

Кастомизированный вывод ошибки формы

Daevaorn
почитай: http://docs.djangoproject.com/en/dev/re … alidation/
Да это помогло очень. Бывает же такое, что слона в зоопарке не заметил.

Офлайн

  • Начало
  • » Django
  • » Кастомизированный вывод ошибки формы[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version