Учебник Flask для начинающих
Полный премиум-курс по веб-разработке на Flask 3.x — современном микрофреймворке для Python. Ты пройдёшь путь от первого запроса до боевого приложения: маршрутизация и объект request, шаблоны Jinja2 с наследованием и защитой от XSS, формы и валидация с Flask-WTF и CSRF, базы данных через Flask-SQLAlchemy с моделями и связями, блюпринты, обработка ошибок, тестирование и деплой через Gunicorn. Каждый урок — разбор «под капотом», частые ошибки, best practices и запускаемые врезки на Python.
Курс «Flask: веб на Python» состоит из 6 разделов и 24 уроков: Введение, Маршруты и запросы, Шаблоны Jinja2, Формы и состояние, Базы данных и Практика. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.
Программа курса
1 Введение
- Что такое Flask и зачем он нужен
Flask — микрофреймворк для веба на Python: философия, место среди Django и FastAPI, как устроен жизненный цикл запроса.
- Установка, виртуальное окружение и первый запуск
Ставим Flask 3.x в виртуальное окружение, разбираемся с pip, requirements и командой flask run.
- Application factory и структура проекта
Фабрика приложения create_app, грамотная структура папок и почему это стандарт современного Flask.
- Что такое Flask и зачем он нужен
2 Маршруты и запросы
- Маршруты и view-функции
Декоратор @app.route, что возвращает view-функция, как Flask превращает результат в HTTP-ответ.
- Динамические URL и конвертеры
Переменные части пути <int:id>, конвертеры типов, как параметры URL попадают в view-функцию.
- HTTP-методы: GET, POST и обработка форм
Методы запроса, параметр methods, чтение request.form и request.args, паттерн POST/Redirect/GET.
- Объект request: данные запроса полностью
Атрибуты request: method, args, form, json, files, headers, cookies — и контекст запроса.
- Ответы, редиректы, url_for и коды состояния
Формирование ответа, redirect и url_for, HTTP-статусы, заголовки и make_response.
- Маршруты и view-функции
3 Шаблоны Jinja2
- Введение в Jinja2 и render_template
Зачем нужны шаблоны, render_template, передача данных в шаблон, разделение логики и представления.
- Синтаксис Jinja: переменные, циклы, условия, фильтры
Выражения, for и if в шаблонах, фильтры через |, безопасный вывод и работа со словарями.
- Наследование шаблонов: base, block, extends
Базовый шаблон-скелет, блоки block, extends в дочерних шаблонах, super() и устранение дублирования.
- Автоэкранирование, безопасность и статика
Автоэкранирование XSS в Jinja, фильтры safe и escape, статические файлы и url_for('static').
- Введение в Jinja2 и render_template
4 Формы и состояние
- Обработка форм вручную и валидация
Чтение полей формы, серверная валидация, накопление ошибок и повторный показ формы с данными.
- Flask-WTF, WTForms и защита от CSRF
Классы FlaskForm, валидаторы, validate_on_submit, автоматическая CSRF-защита и SECRET_KEY.
- Сессии, куки и flash-сообщения
Объект session, подписанные куки, разница cookie и session, flash и get_flashed_messages.
- Обработка форм вручную и валидация
5 Базы данных
- Базы данных и Flask-SQLAlchemy: настройка
Зачем ORM, подключение Flask-SQLAlchemy 3.x, объект db, init_app и строка подключения.
- Модели: таблицы как классы Python
Описание моделей через Mapped и mapped_column, типы столбцов, первичный ключ, создание таблиц.
- CRUD: создание, чтение, обновление, удаление
db.session.add/commit/delete, современный select(), get_or_404 и паттерн работы с сессией.
- Связи между таблицами: relationship
Внешний ключ ForeignKey, relationship, связи один-ко-многим и доступ к связанным объектам.
- Базы данных и Flask-SQLAlchemy: настройка
6 Практика
- Собираем приложение: блог от и до
Складываем фабрику, блюпринт, модели, формы и шаблоны в работающий блог — архитектура связки.
- Блюпринты: масштабируем структуру
Зачем блюпринты, регистрация, url_prefix, свои шаблоны и статика, именование endpoint.
- Обработка ошибок и страницы 404/500
Обработчики ошибок errorhandler, abort, кастомные страницы 404/500 и понятные сообщения пользователю.
- Тестирование Flask-приложения
test_client, фикстуры с фабрикой и тестовой базой, проверка статусов и содержимого ответов.
- Конфигурация, окружения и деплой в продакшен
Классы конфигурации, переменные окружения, секреты, Gunicorn и чеклист готовности к продакшену.
- Собираем приложение: блог от и до