Вчимо FastAPI з досвідом Django¶
Особистий, суб'єктивний набір конспектів для Django-розробника, що переходить на FastAPI. Кожна тема пояснює FastAPI на його власних засадах, а потім ставить його поруч із Django, щоб роки досвіду з Django працювали на вас, а не заважали.
Весь матеріал орієнтований на FastAPI 0.139, Django 6.0 та Python 3.13 (зі стеком FastAPI: Pydantic v2, Starlette та Uvicorn).
Для кого це¶
Ви добре знаєте Django — моделі та міграції, ORM і QuerySet, адмінку,
серіалізатори DRF, class-based в'ю, middleware, settings.py. FastAPI ви
поки що не знаєте. Ця книга саме це й припускає: вона ніколи не
пояснює, що таке міграція, але пояснює кожну концепцію FastAPI, Starlette
і Pydantic з нуля, і кожна стаття завершується зіставленням із тим, що ви
вже робите в Django.
Як організовано конспекти¶
Кожна тема — це пронумерований каталог. Усередині каталогу конспекти та
робочі приклади мають спільну числову послідовність, щоб порядок читання
завжди був очевидним. Зіставлення з Django живе у виносках
> **З досвіду Django:** та в коді пліч-о-пліч, а не в окремому розділі.
Початок роботи¶
- Що таке FastAPI — фреймворк, його стек і чим його філософія відрізняється від Django.
Заплановані теми¶
Структура нижче — це робочий план книги; він розростатиметься у зв'язані статті в міру написання кожної з них.
- Початок роботи — що таке FastAPI, встановлення, ваш перший застосунок, dev-сервер (
uvicornпротиrunserver), розкладка проєкту без Django-структури app/project і життєвий цикл застосунку (startup/shutdown, відповідникAppConfig.ready()). - Маршрутизація та запити — операції шляху проти
urls.py, параметри шляху та запиту, тіла запитів, відповіді та коди статусу, обробка помилок і винятків (HTTPException, обробники, форма422), форми й завантаження файлів і відхід від class-based в'ю. - Дані з Pydantic — моделі Pydantic проти форм Django та серіалізаторів DRF, валідація,
response_modelі налаштування (pydantic-settingsпротиsettings.py). - Шаблони та статичні файли —
Jinja2Templatesпроти Django Template Language,render()→ поверненняHTMLResponseі роздача статичних ресурсів протиcollectstatic. - Бази даних — SQLAlchemy + Alembic: моделі, сесія, міграції проти міграцій Django, запити, серіалізація ORM-об'єктів через Pydantic (
from_attributes, відповідникModelSerializer) і асинхронний доступ. - Впровадження залежностей —
Depends(), ідея, для якої в Django немає прямого відповідника; залежності зyield, під-залежності, повторне використання і що замінює сигнали. - Автентифікація — автентифікація/сесії Django проти OAuth2/JWT, security-залежності, CSRF і модель cookie-проти-токена та CORS.
- Middleware — Starlette middleware проти стека
MIDDLEWAREу Django. - Асинхронність і конкурентність — WSGI проти ASGI,
async defі коли його використовувати, фонові задачі проти Celery і WebSockets проти Django Channels. - Тестування — pytest:
TestClient, фікстури та тестування залежностей і асинхронного коду. - Прогалина з адмінкою та розгортання — що замінює
django.contrib.adminі розгортання воркерів Uvicorn.
Додаток — Мапа екосистеми: шпаргалка «пакет Django → стек FastAPI» (DRF → нативний FastAPI, django-allauth → fastapi-users, Celery → arq/Celery, django.contrib.admin → SQLAdmin, django-filter → параметри запиту, кешування, пагінація, обмеження частоти та пакування).
Супровідні проєкти¶
Кожен розділ постачається з двома невеликими робочими супровідними проєктами — одним на FastAPI та одним на Django — які реалізують саме ту функціональність, що описана в розділі, з тестами, які підтверджують їхню роботу. Ви можете прочитати розділ, а потім завантажити й запустити обидві сторони, щоб побачити ту саму можливість, побудовану кожним зі способів.
Джерело¶
- Репозиторій із джерельним кодом: https://github.com/oduvan/learn-fastapi-from-django.
- Кожен конспект наводить офіційні джерела, з якими звірявся, унизу сторінки — зазвичай fastapi.tiangolo.com, docs.pydantic.dev, starlette.io та docs.djangoproject.com.