![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
dsCode |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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 |
|||
|
||||
dsCode |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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.
|
|||
|
||||
dsCode |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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)) - тогда можно будет получить значение в шаблоне. Но, хотелось бы точно знать, действительно ли нет стандартного способа?
|
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Python: Веб-разработка и фреймворки | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |