Уведомления

Группа в Telegram: @pythonsu

#1 Март 5, 2010 17:58:16

vaxXxa
От: Kyiv, Ukraine
Зарегистрирован: 2009-06-16
Сообщения: 278
Репутация: +  0  -
Профиль   Отправить e-mail  

Формы и доступ к атрибутам

Немного не пойму концепцию в темплейтах…
Я думал, что в темплейтах доступны все атрибуты объекта, а оказалось, что нет.

Возьмем объект forms:
Из контриба берем:

class UserCreationForm(forms.ModelForm):
"""
A form that creates a user, with no privileges, from the given username and password.
"""
username = forms.RegexField(label=_("Username"), max_length=30, regex=r'^\w+$',
help_text = _("Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)."),
error_message = _("This value must contain only letters, numbers and underscores."))
password1 = forms.CharField(label=_("Password"), widget=forms.PasswordInput)
password2 = forms.CharField(label=_("Password confirmation"), widget=forms.PasswordInput,
help_text = _("Enter the same password as above, for verification."))

....................
В темлейте мне нужно вывести форму по-своему, а не через “в лобовую” - form.as_p или что-то подобное.
Вывожу как-то так:
<p>
{{ form.username.errors }}
<label for="id_username">{% trans "Имя пользователя" %}<span class="blue">*</span> :</label><br />
{{ form.username }}
<span>{{ form.username.help_text }}</span>
</p>
Так вот… form.username.help_text пашет, а form.username.error_message - нет.
Вместо этого form.username.errors.

Ну, почему, как и что с доступом в темлейте к атрибутам объекта?



Офлайн

#2 Март 5, 2010 19:50:26

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

Формы и доступ к атрибутам

vaxXxa
Ну, почему, как и что с доступом в темлейте к атрибутам объекта?
Шаблоны тут не причем, просто в вашем примере у form.username действительно нет атрибута error_messages. Посмотрите под отладчиком.



Офлайн

#3 Март 5, 2010 21:35:20

vaxXxa
От: Kyiv, Ukraine
Зарегистрирован: 2009-06-16
Сообщения: 278
Репутация: +  0  -
Профиль   Отправить e-mail  

Формы и доступ к атрибутам

Daevaorn, дейстительно нету.. но я тогда вообще не понимаю… создаю экземпляр класса, что в первом посте:

form = UserCreationForm()
print(form.username)
не находит.. говорит, шо эррор.

1) почему не находит, хотя видно, что есть же?
2) почему если эту же форму передать в темплейт, то form.username, form.username.errors пашет?

что-то я запутался:(



Офлайн

#4 Март 6, 2010 01:27:49

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

Формы и доступ к атрибутам

Именно атрибута username у объекта формы тоже нет. Вы же знаете что запись form.username в шаблоне это не всегда доступ к атрибуту, но также и к ключу словаря. Так вот, у формы доступ к полям осуществляется через form. Но и поле там не то, которое вы определили в описании коласа. Там некий промежуточный объект, так называемый BoundedField. И у него есть help_text, но нет error_messages.



Офлайн

#5 Март 6, 2010 13:41:02

vaxXxa
От: Kyiv, Ukraine
Зарегистрирован: 2009-06-16
Сообщения: 278
Репутация: +  0  -
Профиль   Отправить e-mail  

Формы и доступ к атрибутам

Daevaorn, спасибо. Немного понял, но моск еще сопротивляется - как-то сложно намудрили разработчики.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version