Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 28, 2013 15:49:53

digi
Зарегистрирован: 2012-08-16
Сообщения: 32
Репутация: +  1  -
Профиль  

Вопрос о выводе ошибок через шаблон

Здравствуйте уважаемые джанговцы! Есть форма не на основе модели, а производная от forms.Form

class MyForm(forms.Form):
    width = forms.IntegerField(initial=320, required=True, max_value=1000)
    height = forms.IntegerField(initial=200, required=True, max_value=1000)
На самом деле полей больше, но это не принципиально. Соответственно, если пользователь вводит число больше 1000, то при отправке формы через шаблон выводится ошибка
width
Убедитесь, что это значение меньше либо равно 1000.

Вопрос: как сделать так, чтобы вместо названия поля (как width) выдавалось бы что-то русскоязычное? И так для каждого поля.

Отредактировано digi (Фев. 28, 2013 15:50:16)

Офлайн

#2 Фев. 28, 2013 16:39:26

nnmware
Зарегистрирован: 2012-07-21
Сообщения: 133
Репутация: +  13  -
Профиль   Отправить e-mail  

Вопрос о выводе ошибок через шаблон

Офлайн

#3 Фев. 28, 2013 19:54:57

digi
Зарегистрирован: 2012-08-16
Сообщения: 32
Репутация: +  1  -
Профиль  

Вопрос о выводе ошибок через шаблон

nnmware, я не спорю, что к каждому полю можно написать свой валидатор, куда вложить сообщение об ошибке с наименованием самого поля. Но ведь сама валидация в моём случае выполняется нормально, там же в определении поля есть парметр max_value. И сообщение об ошибке через шаблон выводится и на русском языке, я только не пойму, как вывести вместо латинуского названия поля его лэйблу. Можно конечно в шаблоне у каждого поля рядом с ним вставить переменную

{{ form.field.errors }}
но у меня поля формы расположены очень кучно, и сообщение об ошибке нужно выводить выше всей формы. А там надо высвечивать не только ошибку, но и название поля, к которому это сообщение относится. Неужели без переписывания валидатора каждого поля нельзя обойтись?

Офлайн

#4 Март 1, 2013 03:37:18

nnmware
Зарегистрирован: 2012-07-21
Сообщения: 133
Репутация: +  13  -
Профиль   Отправить e-mail  

Вопрос о выводе ошибок через шаблон

Если речь о форме, построенной не по модели, тогда label кажется надо прописать полю.
width = forms.IntegerField(initial=320, required=True, max_value=1000, label=u'Ширина')

Отредактировано nnmware (Март 1, 2013 03:41:43)

Офлайн

#5 Март 1, 2013 04:57:36

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Вопрос о выводе ошибок через шаблон

Может быть попробовать verbose_name?

class MyForm(forms.Form):
    width = forms.IntegerField(initial=320, required=True, max_value=1000, verbose_name=u'Ширина')
    height = forms.IntegerField(initial=200, required=True, max_value=1000, verbose_name=u'Высота')



Офлайн

#6 Март 1, 2013 05:13:32

nnmware
Зарегистрирован: 2012-07-21
Сообщения: 133
Репутация: +  13  -
Профиль   Отправить e-mail  

Вопрос о выводе ошибок через шаблон

Да, я тоже про verbose_name написал сначала
Но это не модель а форма. Тут- label

Офлайн

#7 Март 1, 2013 05:54:57

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Вопрос о выводе ошибок через шаблон

А! Точно, прошу прощения, почему-то подумал что это модель.



Офлайн

#8 Март 1, 2013 19:04:13

digi
Зарегистрирован: 2012-08-16
Сообщения: 32
Репутация: +  1  -
Профиль  

Вопрос о выводе ошибок через шаблон

Про label это вы мне хорошо подсказали, не знал. Обычно делал всё через формы на основе модели, там есть verbose_name, поэтому вопросов не возникает. Добавил в поле label=u'Ширина', но не получается вывести в шаблон. Как вывести лэйблу поля в шаблон?

Пока что получилось сделать через label_tag, в шаблоне выше формы использую такую конструкцию:

{% for field in form %}
   {% if field.errors %}
	{{field.label_tag }}
        {{field.errors}}
 
   {% endif %}
{% endfor %}

Тут разметку и CSS конечно опустил, не суть.

А как вывести в шаболн ту самую label, что присвоил полю?

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version