Этап 11 из 11 · ≈ 12 ч

Веб-фреймворки

Основа с Junior

FastAPI и Django — API, зависимости, ORM, асинхронность.

фреймворккогда
FastAPIAPI, асинхронность, автодокументация
Django«всё включено»: ORM, админка, авторизация
Flaskминимализм, старые проекты

Что важно знать

  • Pydantic-модели для входа и выхода.
  • Depends — зависимости и авторизация.
  • SQLAlchemy 2.0 или Django ORM, миграции, N+1.

Критерии освоения

Junior ≈ 12 ч

  • Делает REST API на FastAPI или Django REST Framework с валидацией

Практика. Сделать API заказов на FastAPI с Pydantic-моделями, базой и тестами.

Middle ≈ 10 ч

  • Использует внедрение зависимостей FastAPI и асинхронный доступ к базе
  • Работает с ORM (SQLAlchemy или Django ORM) без N+1 и с миграциями

Практика. Добавить асинхронный доступ к PostgreSQL через SQLAlchemy, миграции Alembic и устранить N+1 в списке заказов.

Проверка знаний

Войдите, чтобы пройти тест: сданный тест отмечает тему пройденной на карте и в ИПР.

Вопросы с собеседований

Смотреть все
Как найти и исправить проблему N+1 запросов в Django ORM?Middle

N+1 — один запрос за списком и по запросу на каждый элемент при обращении к связанному объекту в цикле. select_related — JOIN в одном запросе для ForeignKey и OneToOne. prefetch_related — отдельный запрос на связь и склейка в Python для ManyToMany и обратных…

Полный разбор
Как устроено внедрение зависимостей в FastAPI?Middle

Depends(func) — FastAPI вызывает func перед обработчиком и передаёт результат в параметр. Зависимости образуют граф, результат кэшируется в пределах запроса, зависимость с yield выполняет очистку после ответа (сессия БД, транзакция). В тестах их подменяют…

Полный разбор
Чем WSGI отличается от ASGI?Middle

WSGI — синхронный интерфейс между веб-сервером и приложением: один запрос занимает один поток или процесс до ответа (Flask, Django). ASGI — асинхронный: приложение — корутина, один процесс обслуживает тысячи соединений через event loop, поддерживаются…

Полный разбор
Как написать простой HTTP API на FastAPI?Junior

Создать приложение app = FastAPI(), объявить обработчики декораторами @app.get, @app.post и др. Параметр из пути (/items/{item_id}) становится аргументом функции, остальные простые аргументы — query-параметрами, а аргумент-модель Pydantic — телом запроса…

Полный разбор
Как правильно делать HTTP-запросы из Python — requests и httpx?Junior

requests — синхронная библиотека, httpx — похожий интерфейс плюс асинхронный клиент и HTTP/2. Обязательные привычки: всегда задавать timeout (по умолчанию requests ждёт бесконечно), проверять статус (raise_for_status), использовать сессию или клиент для…

Полный разбор
Как работать с JSON в Python и что делать с датами и своими объектами?Junior

json.dumps(obj) превращает объект в строку, json.loads(s) — строку в объект; dump/load — то же для файлов. Поддерживаются только dict, list, str, int, float, bool, None; кортеж станет списком, ключи словаря — строками. datetime, Decimal, UUID, свои классы…

Полный разбор
Как проверять входные данные с помощью Pydantic?Junior

Pydantic проверяет и преобразует данные во время выполнения по аннотациям класса-наследника BaseModel: строку «42» превратит в int, а «abc» для int отклонит с понятной ошибкой ValidationError, где указано поле и причина. Ограничения задают через Field…

Полный разбор

Разборы темы

Документация

← Вся карта «Python»

Партнёр платформы

Разбор собеседования с sotto

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

Разбор собеседования