Перейти до змісту

Вчимо 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.

Заплановані теми

Структура нижче — це робочий план книги; він розростатиметься у зв'язані статті в міру написання кожної з них.

  1. Початок роботи — що таке FastAPI, встановлення, ваш перший застосунок, dev-сервер (uvicorn проти runserver), розкладка проєкту без Django-структури app/project і життєвий цикл застосунку (startup/shutdown, відповідник AppConfig.ready()).
  2. Маршрутизація та запити — операції шляху проти urls.py, параметри шляху та запиту, тіла запитів, відповіді та коди статусу, обробка помилок і винятків (HTTPException, обробники, форма 422), форми й завантаження файлів і відхід від class-based в'ю.
  3. Дані з Pydantic — моделі Pydantic проти форм Django та серіалізаторів DRF, валідація, response_model і налаштування (pydantic-settings проти settings.py).
  4. Шаблони та статичні файлиJinja2Templates проти Django Template Language, render() → повернення HTMLResponse і роздача статичних ресурсів проти collectstatic.
  5. Бази даних — SQLAlchemy + Alembic: моделі, сесія, міграції проти міграцій Django, запити, серіалізація ORM-об'єктів через Pydantic (from_attributes, відповідник ModelSerializer) і асинхронний доступ.
  6. Впровадження залежностейDepends(), ідея, для якої в Django немає прямого відповідника; залежності з yield, під-залежності, повторне використання і що замінює сигнали.
  7. Автентифікація — автентифікація/сесії Django проти OAuth2/JWT, security-залежності, CSRF і модель cookie-проти-токена та CORS.
  8. Middleware — Starlette middleware проти стека MIDDLEWARE у Django.
  9. Асинхронність і конкурентність — WSGI проти ASGI, async def і коли його використовувати, фонові задачі проти Celery і WebSockets проти Django Channels.
  10. Тестування — pytest: TestClient, фікстури та тестування залежностей і асинхронного коду.
  11. Прогалина з адмінкою та розгортання — що замінює django.contrib.admin і розгортання воркерів Uvicorn.

Додаток — Мапа екосистеми: шпаргалка «пакет Django → стек FastAPI» (DRF → нативний FastAPI, django-allauthfastapi-users, Celery → arq/Celery, django.contrib.admin → SQLAdmin, django-filter → параметри запиту, кешування, пагінація, обмеження частоти та пакування).

Супровідні проєкти

Кожен розділ постачається з двома невеликими робочими супровідними проєктами — одним на FastAPI та одним на Django — які реалізують саме ту функціональність, що описана в розділі, з тестами, які підтверджують їхню роботу. Ви можете прочитати розділ, а потім завантажити й запустити обидві сторони, щоб побачити ту саму можливість, побудовану кожним зі способів.

Джерело