Ключевые аспекты веб-разработки на Python
Теория: Fullstack-фреймворки
Фреймворк Flask, который мы рассматривали в самом начале курса, относится к классу так называемых микрофреймворков. Все они в той или иной степени являются клонами Ruby-фреймворка Sinatra, который задал моду на микрофреймворки.
Посмотрите насколько схожа структура кода:
Ruby:
Java:
JavaScript:
Python:
Все они как братья-близнецы в основной фукнциональности: определении маршрутов и задании обработчиков для них. Кроме этой основы в микрофреймворках ничего нет. Все остальное придется ставить отдельно.
В противовес микрофреймворкам рассмотрим полноценные фреймворки — это большие пакеты с кодом, включающие в себя по умолчанию все, что только может потребоваться. Они обычно хорошо расширяются, а на GitHub лежит множество полезных дополнений. Большая история веб-фреймворков берет свое начало с 2004 года, когда появился первый релиз Ruby On Rails, фреймворка на языке Ruby. "Рельсы" намного обогнали свое время и задали тон на многие годы вперед. Многие современные веб-фреймворки — клоны Rails в той или иной степени.
В Ruby кроме Rails, можно сказать, больше ничего и нет — и это положительно сказывается на развитии, так как все бегут в одну сторону. Похожая ситуация в Python: роль «фреймворка по умолчанию» играет Django, хотя в разное время существовали и другие сравнимые с ним по мощности фреймворки (Zope, Plone, webPy и прочие).
Приведу коротко возможности, которыми обладают современные фреймворки:
- Генерация кода. Любой полноценный фреймворк содержит утилиту, позволяющую из командной строки генерировать код, скажем, тесты или миграции
- Встроенные механизмы для тестирования. Другими словами, фреймворк дает возможность начать писать тесты практически без необходимости что-либо дополнительное ставить или конфигурировать
- ORM. Либо своя, либо популярная для языка в целом
- Шаблонизатор и хелперы (вспомогательные функции) для повторяющихся задач вывода информации
- Абстракции для работы с письмами
- Инструменты для интернационализации и локализации, в идеале все остальные части фреймворка также интегрированы с i18n
- Механизмы, обеспечивающие безопасность, например, CQRS
- Кэширование


