Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> django :: newforms :: отображение элементов 
V
    Опции темы
dsCode
Дата 25.6.2008, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 565
Регистрация: 8.9.2007
Где: Saint-Petersburg

Репутация: нет
Всего: 26



Привет всем =) Совершенно недавно увлекся джанго, постепенно изучаю (вообще, занимаюсь php и javascript). Вопросы новичковые, но все же =). Написал форму профайла пользователя. Суть в следующем (вопрос только по пункту 2.2, остальные - работают нормально):

1. если юзер залогинен и перешел по одной из ссылок - /profile/ либо /profile/<свой_username>/ - выводится форма редактирования профиля;

2. если юзер не залогинен (is_anonymous):

-- 2.1 если переход по /profile/ - вывод сообщения, что не авторизован

-- 2.2 если переход по /profile/<username>/ - то просто просмотр любого профиля и ... вот здесь хотелось бы (так же автоматом, как {{ form.as_table }}) видеть ту же самую форму, но не с полями для редактирования, а значения полей, выведенные в виде <span>'ов, например (и вообще, как получить значения полей формы, а не сами поля (form.field_name), которые выводят html-input'ы?). Или это вообще не к формам относится и в этом случае надо во view получать queryset и выводить его вручную в шаблоне (хотя вообще странно, - ведь всего-то отличий - сделать поля нередактируемыми)?

Это сообщение отредактировал(а) dsCode - 25.6.2008, 23:53


--------------------
the .code inside
:my music
PM MAIL WWW ICQ Jabber   Вверх
dsCode
Дата 27.6.2008, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 565
Регистрация: 8.9.2007
Где: Saint-Petersburg

Репутация: нет
Всего: 26



Хм.. После анализа кода newforms обнаружил, что если форма связанная (т.е. задана через data={....}), то в шаблоне в цикле по элементам формы (for field in form)  можно достучаться до атрибутов field.name и field.data (значение, которое нужно вывести в <span>) текущего элемента. Этого, в принципе, достаточно. Но так форма получается связанной и is_valid() будет выдавать False (даже при первом показе), если какое-то поле required но оно не указано (до этого использовался initial={...} вместо data={...} (что, естественно, верно для этого случая), но если задавать через initial={...}, то уже не достучаться в цикле до значения поля - field.field.initial (оно, почему-то, None)). Можно было бы взять значение из form.initial[field.name], но в шаблонах такой синтаксис не допустим, а form.initial.field.name - естественно, не верно. Да, придется, наверно, дописать свои фичи в newforms.


--------------------
the .code inside
:my music
PM MAIL WWW ICQ Jabber   Вверх
dsCode
Дата 27.6.2008, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 565
Регистрация: 8.9.2007
Где: Saint-Petersburg

Репутация: нет
Всего: 26



Можно, конечно, дописать свой атрибут в класс BoundField (newforms.forms), который будет устанавливать значение из словаря формы initial (self.my_data = self.field.widget.value_from_datadict(data=self.form.data, name=self.html_name)) - тогда можно будет получить значение в шаблоне. Но, хотелось бы точно знать, действительно ли нет стандартного способа? 


--------------------
the .code inside
:my music
PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Веб-разработка и фреймворки | Следующая тема »


 




[ Время генерации скрипта: 0.0617 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.