Выбор веб-фреймворка: Django - реперная точка ∞
Понадобилось выбрать инструмент для пары внутренних проектов. Полагалось, что часть логики будет в виде Twisted-сервиса, другая часть - в виде отдельных модулей, а "венчать" это всё будет веб-интерфейс. Так что мне предстояло решить, на чем я буду писать веб-интерфейс. Выбор был таким:
Люди "в теме" спросят, почему же здесь нет TurboGears. Дело просто в том, что я выбирал фреймворки не для сравнения, а для работы, так что критерии выбора были просты: с Django работал ранее, Nevow - логичное дополнение к Twisted-сервису, а Pylons просто привлек мое внимание и заинтересовал. Т.е. не то, чтобы TurboGears не дотягивает до этой троицы, просто я от него не в восторге.
Чтобы решить этот вопрос, я написал модельное приложение, используя каждый из выбранных фреймворков. Сегодня очередь Django.
Сводка
Поскольку с Django я уже имел дело, то он стал некой "реперной точкой", относительно которой я и мерил остальные фреймворки. Итак, немного объективной информации о Django:
- Самоопределение: the web framework for perfectionists with deadlines
- Сайт: http://djangoproject.com
- Лицензия: BSD
- Текущая версия: 0.95
- Используемая мной версия: 0.96pre (svn)
- Установка: distutils
- Зависимости: отсутствуют
- ORM: собственный
- Шаблоны: собственные
- Обработка форм: собственная
- Роутинг: регулярные выражения
- Пакетирование приложения: не предусмотрено
- Методы развертывания: mod_python, WSGI
Поясняю пункты: с сайтом и лицензией вопросов не возникает, установка при помощи distutils означает обычную процедуру получения исходных текстов, разархивирование, python setup.py install. ORM и шаблоны у Django собственные. Что касается роутинга - это способ сопоставления URL и соответствующего обработчика. В случае Django это регулярные выражения. Предпоследний пункт - в случае переноса приложения с машины разработчика на рабочий сервер, придется разработчику самостоятельно подумать над пакетированием приложения. С методами развертывания, надеюсь, вопросов нет - это способы "использования" готового приложения.
Тестовое приложение
В качестве "подопытного кролика" служит простое веб приложение:
- главная страница: статический шаблон, его дизайн используют все остальные страницы, заменяя определенную часть шаблона (блок содержимого)
- страница с формой: простая форма, после ввода имени, должно появиться приветствие с введенным именем. При попытке отправить форму без имени - вывести информацию о необходимости заполнения поля.
- страница с повторяющимся фрагментом: страница, в которой один из фрагментов повторяется. Для разнообразия, пусть страница отображает исходный код всего приложения, а повторяющимся фрагментом будет отдельный файл.
- страница с подстановкой значения: простая страница, в которой один из элементов которой заполняется динамически.
Реализация
Про Django написано много и хорошо (см. например, блог Ивана Сагалаева), так что я особо останавливаться на нюансах реализации не буду (тем более, их практически нет). Затратив где-то около 40 минут, написал искомое Django-приложение. В ходе написания понадобились документы:
- для главной страницы, страницы с повторяющимся фрагментом, страницы с подстановкой значения - Django templates for HTML-authors
- для страницы с формой - Forms and manipulators
Особых проблем с Django-версией не возникло, единственная задержка вышла с отключением сессионных и авторизационных middleware. С кодом приложения можете ознакомиться здесь.
