Глава 22 · Веб-разработка с Python

Веб-фреймворки на Python: Flask, Django, FastAPI и другие

Веб-фреймворк — набор готовых средств для создания веб-приложений. У Flask, Django, FastAPI и Starlette разный набор встроенных возможностей.

Веб-фреймворк — набор библиотек, правил и готовых компонентов, которые упрощают создание веб-приложений: маршрутизацию, обработку HTTP-запросов и ответов, работу с шаблонами, проверку данных, доступ к базе данных и другие типичные задачи. Flask — не единственный веб-фреймворк для Python; у остальных другой набор встроенных возможностей.

Flask
Flask — лёгкий WSGI-фреймворк для создания веб-приложений на Python (раздел 22.19). Его основное ядро сравнительно невелико, а дополнительные возможности обычно подключаются библиотеками и расширениями.
Django
Django — полнофункциональный веб-фреймворк на Python. В его состав входят ORM, система миграций, маршрутизация, шаблоны, средства аутентификации и административный интерфейс.
FastAPI
FastAPI — веб-фреймворк для создания HTTP API на Python. Он использует аннотации типов Python для описания и проверки данных и может автоматически формировать документацию API на основе OpenAPI.
Starlette
Starlette — лёгкий ASGI-фреймворк и инструментарий для создания асинхронных веб-сервисов на Python. FastAPI использует Starlette как один из своих базовых компонентов.

Каждый фреймворк берёт на себя часть типовой работы: маршрутизацию (кто отвечает за какой адрес — раздел 22.11), обработку запроса и ответа, иногда — шаблоны, проверку входных данных, работу с базой данных, авторизацию, инструменты для тестирования. Разница между фреймворками — в том, сколько именно он берёт на себя и насколько легко заменить любую из этих частей на свою.

Другие веб-фреймворки для Python

Кроме Flask, Django, FastAPI и Starlette, в веб-разработке на Python используются и другие проекты. Ни один из них не рассматривается в этой главе подробно — они упомянуты, чтобы вы узнавали названия, встретив их в реальных проектах.

ФреймворкОсновной фокусИнтерфейс/модельТипичное применение
LitestarПроизводительность и строгая типизацияASGIAPI-сервисы, где важны типы и валидация
QuartAPI, совместимый с FlaskASGIПеренос Flask-приложений на асинхронную модель
PyramidГибкая архитектура без навязанной структурыWSGIПроекты, растущие от небольшого скрипта до крупного приложения
TornadoАсинхронный ввод-вывод, долгоживущие соединенияСобственный асинхронный движок + ASGI/WSGI-совместимостьВеб-сокеты, длительные соединения
BottleМинимализм, один файлWSGIСовсем маленькие сервисы и прототипы
Не выбирайте фреймворк по рейтингам популярности
Бенчмарки производительности и списки «самых быстрых фреймворков» сильно зависят от того, что именно измеряется, и быстро устаревают. Разумнее спрашивать: что должно делать именно моё приложение, какой опыт уже есть у команды, что здесь уже используется. Более предметное сравнение по конкретным задачам, а не по абстрактному «что лучше», — в разделе 22.18.

Официальная документация: Flask, Django, FastAPI, Starlette.