Найти - Пользователи
Полная версия: Вопрос о выводе ошибок через шаблон
Начало » Django » Вопрос о выводе ошибок через шаблон
1
digi
Здравствуйте уважаемые джанговцы! Есть форма не на основе модели, а производная от 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
nnmware, я не спорю, что к каждому полю можно написать свой валидатор, куда вложить сообщение об ошибке с наименованием самого поля. Но ведь сама валидация в моём случае выполняется нормально, там же в определении поля есть парметр max_value. И сообщение об ошибке через шаблон выводится и на русском языке, я только не пойму, как вывести вместо латинуского названия поля его лэйблу. Можно конечно в шаблоне у каждого поля рядом с ним вставить переменную
{{ form.field.errors }}
но у меня поля формы расположены очень кучно, и сообщение об ошибке нужно выводить выше всей формы. А там надо высвечивать не только ошибку, но и название поля, к которому это сообщение относится. Неужели без переписывания валидатора каждого поля нельзя обойтись?
nnmware
Если речь о форме, построенной не по модели, тогда label кажется надо прописать полю.
width = forms.IntegerField(initial=320, required=True, max_value=1000, label=u'Ширина')
FishHook
Может быть попробовать 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'Высота')
nnmware
Да, я тоже про verbose_name написал сначала
Но это не модель а форма. Тут- label
FishHook
А! Точно, прошу прощения, почему-то подумал что это модель.
digi
Про label это вы мне хорошо подсказали, не знал. Обычно делал всё через формы на основе модели, там есть verbose_name, поэтому вопросов не возникает. Добавил в поле label=u'Ширина', но не получается вывести в шаблон. Как вывести лэйблу поля в шаблон?

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

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

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

А как вывести в шаболн ту самую label, что присвоил полю?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB