Python Advanced

Интерактивный справочник-курс по веб-разработке на Python: Flask, SQLAlchemy, Django, Django REST Framework

📚 Что повторить перед изучением

  • Базовый Python: функции, классы, декораторы, работа с файлами
  • Git: init, add, commit, branch, checkout
  • Командная строка / терминал: cd, mkdir, ls/dir
  • VS Code: установка, открытие папки, терминал

🔥 Блок 1: Flask (Уроки 1–12)

Введение в веб-разработку, маршрутизация, Pydantic, SQLAlchemy модели и запросы, работа над проектом.

Урок 01 — Введение в веб-разработку и первое Flask приложение

HTTP, HTTPS, Flask vs Django, создание первого приложения, базовая маршрутизация

🎯 Начальная ⏱️ ~45 мин

Урок 02 — Практикум 1: Postman и маршруты с параметрами

Postman, HTTP-методы, конвертеры URL (string, int, float, path), переменные окружения

🎯 Начальная⏱️ ~60 мин

Урок 03 — Библиотека Pydantic

BaseModel, валидация, JSON, Field, @field_validator, Config

🎯 Начальная⏱️ ~60 мин

Урок 04 — Summary session 1

Повторение ключевых концепций блока Flask: HTTP/HTTPS, маршруты, Pydantic

🎯 Начальная⏱️ ~30 мин

Урок 05 — SQLAlchemy: модели и поля

create_engine, declarative_base, Column типы, ForeignKey, relationship

🎯 Средняя⏱️ ~60 мин

Урок 06 — Практикум 2: Pydantic и SQLAlchemy

Практикум: Pydantic v2 (валидация, Field, EmailStr) и SQLAlchemy 2.x (модели, relationship, сессия); 15 задач + разбор ошибок

🎯 Средняя⏱️ ~60 мин

Урок 07 — SQLAlchemy: запросы

CRUD (Create/Read/Update/Delete), select(), фильтрация, сортировка, агрегации, сравнение Query 1.x и select() 2.x

🎯 Средняя⏱️ ~60 мин

Урок 08 — Summary session 2

Повторение блока SQLAlchemy: модели, сессия, CRUD, запросы, связи

🎯 Средняя⏱️ ~45 мин

Урок 09 — Работа над проектом (Flask)

Проект Community Pulse: HTTP-методы, RESTful API, конфигурация, Blueprints, Application Factory, Flask-SQLAlchemy, Pydantic-схемы

🎯 Средняя⏱️ ~90 мин

Урок 10 — Практикум 3: SQLAlchemy-запросы

20 практических задач: CRUD, сортировка, агрегации (avg, max, group_by, having, subquery), JOIN и связи User+Address

🎯 Средняя⏱️ ~60 мин

Урок 11 — Работа над проектом (Flask) ч.2

Community Pulse: GET/POST/PUT/DELETE эндпоинты, объект request, HTTP статус-коды, статистика ответов

🎯 Средняя⏱️ ~90 мин

Урок 12 — Summary session 3

Итоговое повторение Flask-блока: HTTP, Blueprints, Flask-SQLAlchemy, Pydantic-контракты, проект Community Pulse

🎯 Средняя⏱️ ~45 мин

🌐 Блок 2: Django (Уроки 13–25)

Введение в Django, модели, ORM, админ-панель, инлайн-формы, управление пользователями.

Урок 13 — Введение в Django

Установка, структура проекта, первое приложение, settings.py, manage.py, urls, views

🎯 Начальная⏱️ ~60 мин

Урок 14 — Практикум 4: Django

Создание проекта, .env + django-environ, приложение first_app, первое view и URL-маршруты

🎯 Начальная⏱️ ~60 мин

Урок 15 — Practicum 1: Django Models (Library Project)

15 задач практикума: Author, Book, Publisher→Member, Category, Library, Borrow, Review, OneToOne, Events — полная схема БД

🎯 Средняя⏱️ ~90 мин

Урок 16 — Модели Django (углублённо)

Типы полей, параметры (null/blank/choices/validators), ForeignKey/M2M/O2O, механизм миграций, Admin-панель

🎯 Средняя⏱️ ~60 мин

Урок 17 — Практикум 2 (Django): Meta, Admin, Разрешения

18 задач: модели Project/Task/Tag, Meta (ordering, unique_together), Admin (list_display, search, filter), admin-действия, группы разрешений, fixtures

🎯 Средняя⏱️ ~90 мин

Урок 18 — Summary session 4

Повторение моделей и структуры Django

🎯 Средняя⏱️ ~45 мин

Урок 19 — Модели и админ-панель, пользователи

__str__, класс Meta, ModelAdmin, @admin.register, createsuperuser

🎯 Средняя⏱️ ~70 мин

Урок 20 — Практикум 5 (Django): Модели и Admin

15 задач: развёртывание проекта, 8 моделей (Category/Supplier/Product/Address/Customer/Order/OrderItem) + Admin-классы с list_display, list_editable, search по связанным полям

🎯 Средняя⏱️ ~90 мин

Урок 21 — Доп. практикум 3 (Django): ORM-запросы

26 задач: создание данных (Tag/Project/Task/User), QuerySet API, Q/F-классы, bulk_update, annotate(Count) — всё в Django shell

🎯 Средняя⏱️ ~90 мин

Урок 22 — ORM запросы (Django)

Менеджер objects, QuerySet API: filter/exclude/get, Lookups, Q-объекты, create/save, CRUD через Django Shell

🎯 Средняя⏱️ ~60 мин

Урок 23 — Доп. практикум 4 (Django): ORM-запросы, сериализаторы и views

21 задача: продвинутые ORM-запросы (annotate, ExtractWeekDay, Avg, Paginator) + Django REST Framework (ModelSerializer, @api_view, CRUD для тегов/задач/проектов)

🎯 Средняя⏱️ ~120 мин

Урок 24 — Инлайн-формы в Admin

TabularInline, StackedInline, extra/max_num/fields, Admin Actions, queryset.update()

🎯 Средняя⏱️ ~60 мин

Урок 25 — Summary session 5

Итоговое повторение блока Django: __str__, Meta, Admin, инлайны, User, ORM, Q, F, bulk

🎯 Средняя⏱️ ~45 мин

⚡ Блок 3: Django REST Framework (Уроки 26–39)

Основы DRF, сериализаторы, вьюсеты, пагинация, логирование, мини-проекты.

Урок 26 — ORM запросы ч.2 + Основы DRF

aggregate/annotate, order_by, срезы, Subquery/OuterRef, ExpressionWrapper, установка DRF, ModelSerializer, @api_view

🎯 Средняя⏱️ ~75 мин

Урок 27 — Практикум 6: агрегация и ORM

Агрегация (Sum/Avg/Min/Max/Count), ExpressionWrapper, order_by, временные метки и срезы QuerySet — 15 задач на моделях интернет-магазина

🎯 Средняя⏱️ ~90 мин

Урок 28 — Доп. практикум 5: мини-проект Agile Projects

Мини-проект Django + DRF: модели Tag/Project/Task/ProjectFile, REST API CRUD, загрузка файлов с валидацией, Agile git-workflow — 9 задач

🎯 Средняя–Высокая⏱️ ~120 мин

Урок 29 — Основы DRF часть 2

Поля для связей (StringRelatedField, SlugRelatedField, PrimaryKeyRelatedField, M2M), Class-Based Views, APIView, Generic Views, ViewSets + Router

🎯 Средняя⏱️ ~75 мин

Урок 30 — Доп. практикум 6: мини-проект Agile Projects ч.2

CRUD проектов/задач с частичным обновлением, пагинация (PageNumberPagination), загрузка файлов с chunked save, кастомный User (AbstractBaseUser) — 6 задач

🎯 Средняя–Высокая⏱️ ~120 мин

Урок 31 — Extract-методы, query_params

Функции Extract* для фильтрации по датам, request.query_params, динамическая фильтрация, сортировка, пагинация в APIView

🎯 Средняя⏱️ ~70 мин

Урок 32 — Summary session 6

Итоговое повторение DRF-блока: ORM агрегация, сериализаторы, Generic views, ViewSets, query_params, Task API

🎯 Средняя⏱️ ~45 мин

Урок 33 — Основы DRF часть 3

lookup_field, get_object(), get_serializer_context(), filter_backends: фильтрация, поиск, сортировка

🎯 Средняя⏱️ ~70 мин

Урок 34 — Практикум 7: Сериализаторы DRF

13 задач: ModelSerializer для 8 моделей, read/write пары, вложенные сериализаторы, read_only_fields, валидация phone_number и quantity

🎯 Средняя⏱️ ~90 мин

Урок 35 — Доп. практикум 7: Agile мини-проект ч.3

7 задач: API файлов (список, детали, скачивание), кастомная модель User, регистрация с валидацией, assignee через SlugRelatedField, FileResponse

🎯 Средняя–Высокая⏱️ ~120 мин

Урок 36 — Основы DRF часть 4

Soft Deletion (мягкое удаление), ленивая загрузка ORM, select_related/prefetch_related, транзакции (transaction.atomic, on_commit)

🎯 Средняя⏱️ ~75 мин

Урок 37 — Практикум 8: Представления и маршруты DRF

ViewSets, Generic Views, DefaultRouter, DjangoFilterBackend — CRUD для 8 моделей интернет-магазина

🎯 Средняя⏱️ ~90 мин

Урок 38 — Пагинация и логирование DRF/Django

pagination_class, PageNumberPagination, LimitOffsetPagination, CursorPagination, глобальная пагинация, LOGGING, django.db.backends

🎯 Средняя⏱️ ~60 мин

Урок 39 — Summary session 7

Итоговое повторение DRF-блока: GenericAPIView, Generic Views, ViewSets, Router, фильтрация, пагинация, Soft Deletion, транзакции, логирование SQL

🎯 Средняя⏱️ ~45 мин

🔐 Блок 4: Аутентификация и продвинутые темы (Уроки 40–46)

Аутентификация, авторизация, JWT, разрешения, сигналы, email-конфигурация.

🏗️ Капстоун-проекты

Пошаговая сборка реальных приложений с нуля. Каждая серия закрывает темы, помеченные callout-verify в основных уроках, и демонстрирует лучшие практики актуального стека.

🎯 Что изучать дальше

После завершения этого курса рекомендуем:

  • Пройти курс по Async Python (asyncio, aiohttp, FastAPI)
  • Изучить тестирование (pytest, unittest)
  • Освоить Docker для контейнеризации приложений
  • Изучить CI/CD (GitHub Actions, GitLab CI)