Форум сайта python.su
Не так давно использую Джанго, но все-таки пишу сейчас свой портал на данном фреймворке. В процессе работы возник вопрос (наверное безумно глупый), на который я не смог найти ответ в мануалах на портале джанги (официальном).
Суть - у меня есть форма связанная с базой. Понятное дело, что для красивого вывода дешевых form.as_table и т.д. не хватает. Соответсвенно кастомизировал вывод формы как form.name_of_form_field
<tr>
<td>First name:</td><td>{{ form.first_name }}</td><td align="left">{% if form.first_name.errors %}<font color="#8c0808" size="2">Please, write first name</font>{% endif %}</td>
</tr>
name = forms.CharField(
widget=forms.TextInput(attrs={'class':'special'}))
class CalendarWidget(forms.TextInput):
class Media:
css = {
'all': ('pretty.css',)
}
Офлайн
Ну прям никто не знает? Даже Александр Кошелев?
Офлайн
GalaxyЧто значит “даже”?:-)
Ну прям никто не знает? Даже Александр Кошелев?
Офлайн
Наиболее простой вариант, изменить tr
<tr{% if form.first_name.errors %} class="error-field"{% endif %}>
<td>First name:</td>
<td>{{ form.first_name }}</td>
<td align="left">{% if form.first_name.errors %}<font color="#8c0808" size="2">Please, write first name</font>{% endif %}</td>
</tr>
name = forms.CharField(
label = u"First name",
widget=forms.TextInput(attrs={'class':'special'}))
Офлайн
DaevaornНу извините. У вас кстати сайт глючит.) Ну потому, что CSS я знаю и мне интересно возможности Джанги. Вот и хотел узнать умеет ли она получать это просто. Я так понял что все-таки нет. Просто логично было, если как в javascript было: form.field_name.style()…GalaxyЧто значит “даже”?:-)
Ну прям никто не знает? Даже Александр Кошелев?
Я не очень понимаю, почему вы зациклились на добавлении класса к самому полю. Что вам мешает добавить нужный класс к контейнеру поля (в вашем случае <td>) и в css прописать правила для инпутов внутри него?
PS: И не надо писать мне в блог комментарий, совершенно в посторонний пост, задавая этот вопрос:-)
Отредактировано (Ноя. 22, 2009 18:17:15)
Офлайн
В шаблоне можно вывести отдельное поле, сформированное методом as_table?
Что бы не писать такое:
<tr><td colspan="2" class="error">{{ form.title.errors }}</td></tr>
<tr><th>{{ form.title.label_tag }}</th><td>{{ form.title }}</td></tr>
{{ form.title.as_table }}
Офлайн
NaotaНе такое не катит из чисто эстетических моментов. А именно что у нас таблица раздвигается когда возникает ошибка и она пишется сверху. Поэтому я и переписал не через .as_table или .as_p а свой вывод в нем красиво и удобно отображаются ошибки справа от полей и я могу уже нормально клеить туда стили css.
В шаблоне можно вывести отдельное поле, сформированное методом as_table?
Что бы не писать такое:а просто:<tr><td colspan="2" class="error">{{ form.title.errors }}</td></tr>
<tr><th>{{ form.title.label_tag }}</th><td>{{ form.title }}</td></tr>{{ form.title.as_table }}
Офлайн
Galaxy эти два способа придумали не просто так, as_table лучше подойдет для центрированных форм, а as_p для не центрированных. Но вопрос то не в этом.
Отредактировано (Ноя. 23, 2009 12:32:30)
Офлайн