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

Сравнение Flask, Django и FastAPI

Flask, Django и FastAPI решают разные классы задач и предоставляют разный набор встроенных возможностей.

Раздел 22.17 показал общую карту. Теперь сравним три самых заметных фреймворка — Flask, Django и FastAPI — по конкретным задачам, а не по общим впечатлениям.

КритерийFlaskDjangoFastAPI
НазначениеОбщего назначения, часто сайты с HTML-страницамиОбщего назначения, приложения вокруг базы данныхПрежде всего HTTP API
МаршрутизацияВстроеннаяВстроеннаяВстроенная
Шаблоны HTMLJinjaВстроенный движок шаблоновНе основная задача — фреймворк ориентирован на API
ORMНет своего — через сторонний ORM (раздел 22.26)Да, встроенныйНет своего — через сторонний ORM
МиграцииНет своих — через сторонний инструментДа, встроенные (makemigrations/migrate)Нет своих — через сторонний инструмент
Административный интерфейсНет своегоДа, встроенный автоматическийНет своего
АутентификацияНет своей — через расширенияДа, встроенная система пользователейНет своей — через сторонние библиотеки
Проверка данныхВручную или через расширенияЧерез формы и сериализаторы Django/DRFВстроенная, на основе подсказок типов Python
OpenAPIНет своейНет своей в ядреДа, встроенная, автоматическая
WSGI / ASGI (раздел 22.19)WSGI, с ограниченной поддержкой async-обработчиковПоддерживает и WSGI, и ASGI режимы развёртыванияASGI изначально
Типичные проектыНебольшие и средние сайты, простые APIКрупные приложения с базой данных и админкойHTTP API, сервисы с типизированными данными
Django REST Framework — отдельный проект, а не часть ядра Django
Django из коробки умеет отдавать HTML-страницы и имеет админ-панель, но полноценный инструментарий для REST API — это отдельный пакет, Django REST Framework (DRF), который устанавливают и подключают самостоятельно. Он не входит в состав самого Django и не устанавливается вместе с ним автоматически.
Отправная точка для выбора
Нужен сайт с формами, шаблонами, без готовой админки
Flask
Нужна бизнес-система с базой данных и админ-панелью «из коробки»
Django
Нужен API-сервис с автоматической документацией
FastAPI
Нужен низкоуровневый контроль над ASGI-приложением
Starlette
Реальные проекты часто смешивают инструменты — это стартовые ориентиры, а не жёсткие правила

Почему для учебного проекта выбран Flask

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

Django предоставляет больше готовых компонентов, например ORM, миграции, аутентификацию и административный интерфейс. FastAPI ориентирован прежде всего на создание HTTP API и тесно использует аннотации типов Python.

Flask выбран здесь как подходящий инструмент для первого учебного веб-приложения. Это не означает, что Flask является лучшим решением для любого проекта.

Практика: выбор фреймворка по задаче
Интерактивный ноутбук прямо в браузере — Python 3.14 через Pyodide, без установки
Открыть практику →