Fork me on GitHub
6/12/2006

Выбор веб-фреймворка: 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-версией не возникло, единственная задержка вышла с отключением сессионных и авторизационных middleware. С кодом приложения можете ознакомиться здесь.

Комментарии

Все статьи