1. http://www.artlebedev.ru/tools/technogrette/etc/inline-forms/

    Django шагает по планете.
  2. Увидел этот ужас вчера днем в ридере. Плакал.

    Позор автору и тому кто его пустил писать статьи про Джангу.

  3. truetug.ya.ru

    14.03.2010

    2 ↑
    2 ↓
    Увидел этот ужас вчера днем в ридере. Плакал.
    Позор автору и тому кто его пустил писать статьи про Джангу.
    Лучше уж про Джангу, чем про, прости Господи, Парсер =)
  4. Александр Кошелев, а объясните, пожалуйста, вкратце, что не так.
  5. Dmitry Kukushkin

    14.03.2010

    3 ↑
    1 ↓
    {{ form.as_table() }} - понравилось :)
  6. gregoryfly.ya.ru

    14.03.2010

    1 ↑
    3 ↓
    {{ form.as_table() }} - понравилось :)
    Это же пример. Понятно, что в реальных ситуациях форма чаще всего выводится не таблицей.
  7. А разве не так надо?
    {{ form.as_table }}
  8. truetug.ya.ru

    14.03.2010

    0 ↑
    0 ↓
    А это нормальная ситуация для студии, хардкодить части шаблона в виджет?
    return '<table class="fieldset_widget">%s</table>' % self.attrs['form']
  9. gregoryfly.ya.ru

    14.03.2010

    0 ↑
    0 ↓
    А разве не так надо?

    {{ form.as_table }}
    Да, в родном шаблонизаторе Django использование скобок — это ошибка.
    Видимо, автор использует Jinja2.
  10. Иван Сагалаев

    14.03.2010

    1 ↑
    0 ↓

    А это нормальная ситуация для студии, хардкодить части шаблона в виджет?

    Это принятая практика в Джанге, вообще-то... Все input'ы и select'ы захардкожены, например. Что включать, а что не включать в виджет, решается по обстановке.

    P.S. Вообще странно, чего вдруг техногретовская статья такое внимание привлекла... Программист решил поделиться своим открытием — отлично. Это ж не какой-то ведущий технологический блог страны, чтобы там блох выискивать...

  11. truetug.ya.ru

    14.03.2010

    0 ↑
    0 ↓
    Это принятая практика в Джанге, вообще-то... Все input'ы и select'ы захардкожены, например. Что включать, а что не включать в виджет, решается по обстановке.
    Да, да в input widget захардкожен input, а в select захордкожены select и option. Хардкодить обертку как-то не правильно, ведь в шаблоне и не as_table может быть, и класс другой + там вроде еще и mark_safe нужен.
    P.S. Вообще странно, чего вдруг техногретовская статья такое внимание привлекла... Программист решил поделиться своим открытием — отлично. Это ж не какой-то ведущий технологический блог страны, чтобы там блох выискивать...
    Это еще что, посмотрим что на Хабре напишут =) Студия это все-таки не частный бложек, она заявляет высокое качество своих работ и в программном отношении в том числе. На нее ориентируются многие. Появление статей по Джанге это безусловно положительная тенденция, но не в таком виде.
  12. gregoryfly.ya.ru

    14.03.2010

    2 ↑
    0 ↓
    Появление статей по Джанге это безусловно положительная тенденция, но не в таком виде.
    Хорошо. Что еще, кроме хардкодинга части шаблона в виджете вам кажется неправильным?

    Виджет можно сделать более универсальным, но это раздует код примера и сделает его менее понятным.

    Лично я сами методы as_table, as_p и as_ul считаю неправильными, т.к. они содержат существенную часть шаблона формы. Но как без них?

    На хабре, скорее всего, напишут "Ололо! Лепра сделана лично Лебедевым на Имприматуре, написанном на Джанго". Там у всех IQ падает в два раза при упоминании домена artlebedev.ru.
  13. Александр Кошелев, а объясните, пожалуйста, вкратце, что не так.

    Ну фактическую ошибку в шаблоне тут уже обсудили. Но это не так страшно.

    Страшно тут, что под прикрытием "ненарушения" DRY предлагается сомнительный способ работы с формой.

    Проблемы вывести поля по-отдельности никакой нет. Написать шаблон для вывода поля и использовать его при выводе формы не является сложной задачей и уже тем боее покушением на DRY.

    А получается, что по сути ради того чтобы отработал as_table (который по уточнению самого автора уже в этом треде "Это же пример." — т.е. шаблон всё-равно другой) городится огород с таким полем и виджетом.

    Ну и конечно самое интересное в заметке опущено — валидация и обработка данных этих по сути разных форм и формсета. А у формы, как понятно, в большей степени этот функционал полезен, а не просто "отрисовка" полей.

    Это мне напоминает типичные вопросы в форуме — "как мне спроектировать модели, чтобы у меня в админке эта пимпоча была рядом с той штучечкой" и "как мне побольше запутать код, чтобы не нарушить DRY".

    Не соглашусь также с Иваном по поводу внимания к заметке. Это действительно не персональный блог какого-то начинающего программиста, а довольно популярная и приковывающая взгляды площадка. Это, как мне кажется, обязывает держать какую-то планку качества. Падение этой планки и вызывает ажиотаж.

  14. Иван Сагалаев

    14.03.2010

    0 ↑
    0 ↓

    а довольно популярная и приковывающая взгляды площадка.

    Она популярная, да. Но это популярность бренда "Студия Лебедева". А по сути качество этой статьи мало отличается от всего остального, что там писалось с самого начала. Хотя, я давно уже Техногрет не читаю...

  15. gregoryfly.ya.ru

    14.03.2010

    1 ↑
    2 ↓
    Проблемы вывести поля по-отдельности никакой нет. Написать шаблон для вывода поля и использовать его при выводе формы не является сложной задачей и уже тем боее покушением на DRY.
    Допустим, нужно вывести форму, созданную полностью динамически (классы формы создаются по конфигу на этапе выполнения программы). В таком случае написание шаблона вручную становится невозможным, а решение с виджетом позволит вывести форму через as_table (as_p, as_dl...).
  16. А по сути качество этой статьи мало отличается от всего остального, что там писалось с самого начала.

    Согласен. Увы.

  17. admin

    14.03.2010

    2 ↑
    0 ↓
    Григорий затронул интересную тему, которая периодически поднимается среди разработчиков джанги: http://groups.google.com/group/django-developers/browse_thread/thread/f9aae709a7fda689 . Поэтому, в технической части решения ожидал увидеть что-то более декларативное, похожее на:
    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}))
    Возможно, что данный функционал появится в django 1.2 .

    Но, в преамбуле статьи, чертовски заманчиво написано:
    Задача. Сделать удобную форму стандартными инструментами
    Прочитав, я так и не понял, решена-ли задача, где макеты, где результат? :)
  18. Дмитрий

    21.03.2010

    0 ↑
    0 ↓

    Прочитав, я так и не понял, решена-ли задача, где макеты, где результат? :)

    Так в самом низу статьи автор написал: "Способы размножения полей будут описаны в следующей статье."

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.