Django Forms

pony powered

В джанге многое сразу покорило мое сердце - прекрасные модели, мощный URLconf, красивые шаблоны. Но вот джанго-формы открылись для меня во всей красе лишь недавно. Я быстро научился верстать и обрабатывать формы руками, поэтому не было надобности вникать в довольно большой посвященный им раздел документации (10 разделов!). В новом большом django-проекте я пишу код уже не один, а с отличными разработчиками - Димой Смолиным и Толиком Востряковым, которые и помогли мне быстрее “вьехать” в суть джанго-форм.

###Поля Впервые я удивился, увидев как Димка собрал поле CalendarField - поле с датой, при клике на которое появляется jQuery-виджет datepicker. Конечно же, я пытался доказать что это - никому не нужное баловство, но Дима мягко доказывал, что так писать хорошо и правильно. И действительно - сейчас мы используем это поле в десятках форм и очень довольны результатом.

Дальше-больше, у нас есть одно довольно специфичное поле, которое хранит данные в базе в довольно хитром формате, и эта хитрость должны быть скрыта от пользователя. Мы написали кастомные поле и виджет (виджет отвечает за рендеринг поля в html-код) и используем их повсюду.

###ModelForm Через полчаса работы с ModelForm я воскликнул - “Джангу написали просветленные архаты!!!”. Задача была такая - сделать редактирование сущностей на служебном сайте. ModelForm позволяет сделать это очень быстро, красиво и удобно. Внутренняя админка Django активно использует их возможности (похоже, ModelForm написали именно для неё). Очень удобный инструмент, рекомендую!

###API fields validation Больше же всего меня поразило широкое использование форм для валидации параметров, которые передаются в REST API. Их используют в Django Piston (мини-фреймворке для написания API), такой же подход я нашел в исходных кодах Reddit-а (ключевое слово - @validatedForm).

Если вы до сих пор пишете обработку всех этих случаев руками, то почитайте документацию по своему любимому веб-фреймворку - там наверняка есть много удобных инструментов, которые позволят удалить немало строк вашего кода. А чем компактнее проект, тем больше у него шансов на дальнейшее развитие :)

comments powered by Disqus