-
-
Увидел этот ужас вчера днем в ридере. Плакал.
Позор автору и тому кто его пустил писать статьи про Джангу.
-
Увидел этот ужас вчера днем в ридере. Плакал.
Позор автору и тому кто его пустил писать статьи про Джангу.Лучше уж про Джангу, чем про, прости Господи, Парсер =) -
Александр Кошелев, а объясните, пожалуйста, вкратце, что не так.
-
{{ form.as_table() }} - понравилось :)
-
{{ form.as_table() }} - понравилось :)Это же пример. Понятно, что в реальных ситуациях форма чаще всего выводится не таблицей.
-
А разве не так надо?
{{ form.as_table }} -
А это нормальная ситуация для студии, хардкодить части шаблона в виджет?
return '<table class="fieldset_widget">%s</table>' % self.attrs['form'] -
А разве не так надо?
{{ form.as_table }}Да, в родном шаблонизаторе Django использование скобок — это ошибка.
Видимо, автор использует Jinja2. -
А это нормальная ситуация для студии, хардкодить части шаблона в виджет?
Это принятая практика в Джанге, вообще-то... Все input'ы и select'ы захардкожены, например. Что включать, а что не включать в виджет, решается по обстановке.
P.S. Вообще странно, чего вдруг техногретовская статья такое внимание привлекла... Программист решил поделиться своим открытием — отлично. Это ж не какой-то ведущий технологический блог страны, чтобы там блох выискивать...
-
Это принятая практика в Джанге, вообще-то... Все input'ы и select'ы захардкожены, например. Что включать, а что не включать в виджет, решается по обстановке.Да, да в input widget захардкожен input, а в select захордкожены select и option. Хардкодить обертку как-то не правильно, ведь в шаблоне и не as_table может быть, и класс другой + там вроде еще и mark_safe нужен.
Это еще что, посмотрим что на Хабре напишут =) Студия это все-таки не частный бложек, она заявляет высокое качество своих работ и в программном отношении в том числе. На нее ориентируются многие. Появление статей по Джанге это безусловно положительная тенденция, но не в таком виде.P.S. Вообще странно, чего вдруг техногретовская статья такое внимание привлекла... Программист решил поделиться своим открытием — отлично. Это ж не какой-то ведущий технологический блог страны, чтобы там блох выискивать... -
Появление статей по Джанге это безусловно положительная тенденция, но не в таком виде.Хорошо. Что еще, кроме хардкодинга части шаблона в виджете вам кажется неправильным?
Виджет можно сделать более универсальным, но это раздует код примера и сделает его менее понятным.
Лично я сами методы as_table, as_p и as_ul считаю неправильными, т.к. они содержат существенную часть шаблона формы. Но как без них?
На хабре, скорее всего, напишут "Ололо! Лепра сделана лично Лебедевым на Имприматуре, написанном на Джанго". Там у всех IQ падает в два раза при упоминании домена artlebedev.ru. -
Александр Кошелев, а объясните, пожалуйста, вкратце, что не так.
Ну фактическую ошибку в шаблоне тут уже обсудили. Но это не так страшно.
Страшно тут, что под прикрытием "ненарушения" DRY предлагается сомнительный способ работы с формой.
Проблемы вывести поля по-отдельности никакой нет. Написать шаблон для вывода поля и использовать его при выводе формы не является сложной задачей и уже тем боее покушением на DRY.
А получается, что по сути ради того чтобы отработал
as_table(который по уточнению самого автора уже в этом треде "Это же пример." — т.е. шаблон всё-равно другой) городится огород с таким полем и виджетом.Ну и конечно самое интересное в заметке опущено — валидация и обработка данных этих по сути разных форм и формсета. А у формы, как понятно, в большей степени этот функционал полезен, а не просто "отрисовка" полей.
Это мне напоминает типичные вопросы в форуме — "как мне спроектировать модели, чтобы у меня в админке эта пимпоча была рядом с той штучечкой" и "как мне побольше запутать код, чтобы не нарушить DRY".
Не соглашусь также с Иваном по поводу внимания к заметке. Это действительно не персональный блог какого-то начинающего программиста, а довольно популярная и приковывающая взгляды площадка. Это, как мне кажется, обязывает держать какую-то планку качества. Падение этой планки и вызывает ажиотаж.
-
а довольно популярная и приковывающая взгляды площадка.
Она популярная, да. Но это популярность бренда "Студия Лебедева". А по сути качество этой статьи мало отличается от всего остального, что там писалось с самого начала. Хотя, я давно уже Техногрет не читаю...
-
Проблемы вывести поля по-отдельности никакой нет. Написать шаблон для вывода поля и использовать его при выводе формы не является сложной задачей и уже тем боее покушением на DRY.Допустим, нужно вывести форму, созданную полностью динамически (классы формы создаются по конфигу на этапе выполнения программы). В таком случае написание шаблона вручную становится невозможным, а решение с виджетом позволит вывести форму через as_table (as_p, as_dl...).
-
А по сути качество этой статьи мало отличается от всего остального, что там писалось с самого начала.
Согласен. Увы.
-
Григорий затронул интересную тему, которая периодически поднимается среди разработчиков джанги: http://groups.google.com/group/django-developers/browse_thread/thread/f9aae709a7fda689 . Поэтому, в технической части решения ожидал увидеть что-то более декларативное, похожее на:
Возможно, что данный функционал появится в django 1.2 .class FileForm(forms.Form):
# Вложенная форма
file = forms.FileField(label='файл')
comment = forms.CharField(label='название')
class SuperForm(forms.Form):
# Форма с полями и вложенной формой
name = forms.CharField(label='Имя')
files = FormSetField(FileForm, label='Файлы', repeat=2)
comment = forms.CharField(label='Комментарий', widget=forms.Textarea({'rows': 3}))
Но, в преамбуле статьи, чертовски заманчиво написано:
Прочитав, я так и не понял, решена-ли задача, где макеты, где результат? :)Задача. Сделать удобную форму стандартными инструментами -
Прочитав, я так и не понял, решена-ли задача, где макеты, где результат? :)
Так в самом низу статьи автор написал: "Способы размножения полей будут описаны в следующей статье."
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.







