Ключевые аспекты веб-разработки на Python
2026-02-26 23:05 Diff

Фреймворк Flask, который мы рассматривали в самом начале курса, относится к классу так называемых микрофреймворков. Все они в той или иной степени являются клонами Ruby-фреймворка Sinatra, который задал моду на микрофреймворки.

Посмотрите насколько схожа структура кода:

Ruby:

Java:

JavaScript:

Python:

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

В противовес микрофреймворкам рассмотрим полноценные фреймворки — это большие пакеты с кодом, включающие в себя по умолчанию все, что только может потребоваться. Они обычно хорошо расширяются, а на GitHub лежит множество полезных дополнений. Большая история веб-фреймворков берет свое начало с 2004 года, когда появился первый релиз Ruby On Rails, фреймворка на языке Ruby. "Рельсы" намного обогнали свое время и задали тон на многие годы вперед. Многие современные веб-фреймворки — клоны Rails в той или иной степени.

В Ruby кроме Rails, можно сказать, больше ничего и нет — и это положительно сказывается на развитии, так как все бегут в одну сторону. Похожая ситуация в Python: роль «фреймворка по умолчанию» играет Django, хотя в разное время существовали и другие сравнимые с ним по мощности фреймворки (Zope, Plone, webPy и прочие).

Приведу коротко возможности, которыми обладают современные фреймворки:

  • Генерация кода. Любой полноценный фреймворк содержит утилиту, позволяющую из командной строки генерировать код, скажем, тесты или миграции
  • Встроенные механизмы для тестирования. Другими словами, фреймворк дает возможность начать писать тесты практически без необходимости что-либо дополнительное ставить или конфигурировать
  • ORM. Либо своя, либо популярная для языка в целом
  • Шаблонизатор и хелперы (вспомогательные функции) для повторяющихся задач вывода информации
  • Абстракции для работы с письмами
  • Инструменты для интернационализации и локализации, в идеале все остальные части фреймворка также интегрированы с i18n
  • Механизмы, обеспечивающие безопасность, например, CQRS
  • Кэширование