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).

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

Популярные статьи

Про стэнфордские онлайн-классы

Django Dash 2011, мои впечатления

Лев Валкин про Силиконовую долину

OpenOffice + Python, pабота с файлами MS Word

Блоги программистов

Бывают ли такие дизайнеры?

Скорость

Жизнь и работа на море

Нужно больше творить

Pip, virtualenv и virtualenvwrapper

Об авторе

Меня зовут Роман Ворушин. Я отец двух дочерей и страстный программист.

С командой киборгов сделал Рисоваську, а потом еще много веб-проектов. Сейчас работаю в Grammarly.

roman.vorushin@gmail.com