Медиаблог /

Что такое Flask Python: микрофреймворк для веб-разработки с нуля

23 июля 2026

Что такое Flask Python: микрофреймворк для веб-разработки с нуля

Flask Python — микрофреймворк (минималистичный веб-фреймворк) для создания веб-приложений на Python. Создан в 2010 году немецким разработчиком Армином Ронахером, распространяется под открытой лицензией BSD и устанавливается одной командой: pip install flask.

Flask Python микрофреймворк — символика Flask и Python на фоне кода

В отличие от полноценных фреймворков, Flask не навязывает структуру и не включает ORM (объектно-реляционный маппер, Object-Relational Mapping) или систему авторизации «из коробки». Зато даёт три вещи: маршрутизацию через декоратор @app.route, встроенный шаблонизатор Jinja2 и архитектуру WSGI (Web Server Gateway Interface — стандарт интерфейса между веб-сервером и Python-приложением). Остальное разработчик подключает сам через расширения.

image

Не знаете, с чего ребёнку начать в IT?

Дайте попробовать разные направления: Python, веб-разработку и робототехнику

Смотреть программу

Реальные компании давно сделали выбор в пользу Flask: Pinterest, Netflix, Uber, Reddit, Twilio используют его для API и микросервисов.

В статье — всё для старта с нуля: установка на Linux, macOS и Windows, первое Hello World за 10 строк, маршруты, шаблоны Jinja2, работа с базой данных SQLite и PostgreSQL, запуск через Gunicorn в production.

Хотите освоить веб-разработку на Python с нуля? На курсе «Программирование: Уверенный старт» третий модуль целиком посвящён Flask: клиент-серверная архитектура, шаблоны Jinja2, работа с базой данных SQLite и реальный веб-проект в портфолио. Обучение онлайн, из любой точки России, бесплатно (0 ₽ вместо 50 000 ₽). Узнайте подробнее на странице курса.

Flask Python — что это такое и зачем нужен

Flask — микрофреймворк для веб-разработки на Python. Слово «микро» не означает ограниченность — это философия: минимальный набор инструментов и максимум свободы для разработчика.

Основные факты: год создания — 2010; автор — Армин Ронахер; лицензия — BSD (открытый код, коммерческое применение разрешено); минимальная версия Python — 3.5, рекомендуется 3.10+.

Чем Flask отличается от обычной библиотеки? Библиотеку разработчик вызывает сам, когда нужно. Фреймворк управляет структурой приложения: задаёт, где лежат папки /templates и /static, как строится система маршрутов, как обрабатываются входящие запросы. Flask — именно фреймворк. В разговорной речи его часто называют «библиотекой» — это не критичная ошибка, но технически точнее «микрофреймворк».

Сценарии применения:

  • веб-приложения с нестандартной архитектурой;
  • REST API (программный интерфейс для обмена данными между сервисами);
  • микросервисы — небольшие независимые части крупной системы;
  • корпоративные внутренние инструменты и прототипы.

Расширяемость — главная сила Flask. Базовый пакет компактен, но экосистема богатая: Flask-SQLAlchemy (работа с базами данных), Flask-Login (авторизация пользователей), Flask-WTF (веб-формы с CSRF-защитой — защитой от межсайтовых запросов), Flask-Migrate (версионирование схемы базы данных), Flask-Bcrypt (хеширование паролей).

Flask или Django — что выбрать Python-разработчику

Оба фреймворка написаны на Python, оба поддерживают стандарт WSGI. Разница — в объёме встроенных инструментов и свободе архитектурных решений.

Параметр
Flask
Django
FastAPI
Тип Микрофреймворк Full-stack фреймворк Асинхронный микрофреймворк
Встроенная ORM Нет (через Flask-SQLAlchemy) Да Нет
Шаблонизатор Jinja2 Django Templates Нет (через Jinja2)
Порог входа Низкий Средний Средний
Гибкость Высокая Ограниченная Высокая
Production-сервер Gunicorn, uWSGI Gunicorn, uWSGI Uvicorn, Hypercorn
Лучший сценарий API, микросервисы Монолиты, CMS Высоконагруженные API

Flask легче Django: меньше встроенных компонентов, больше контроля над каждым решением. Django включает ORM, административную панель, систему авторизации и многое другое прямо «из коробки» — это ускоряет старт, но уменьшает гибкость архитектуры.

Когда выбирать Flask: REST API, микросервисы, нестандартная архитектура, прототипирование.

Когда выбирать Django: крупные монолиты, проекты с административной панелью, когда нужно быстро стартовать без ручного подбора каждого компонента.

Начинающему разработчику Flask проще для понимания: вы видите каждый слой системы явно, ничего не скрыто «под капотом» фреймворка.

Как установить Flask Python

Инфографика: 4 шага установки Flask Python — язык, среда, пакет, запуск

Процесс установки состоит из четырёх шагов: установить Python → создать виртуальное окружение (venv, от virtual environment) → установить Flask через менеджер пакетов pip → запустить приложение. Для работы нужен Python версии 3.5 и выше, рекомендуется 3.10+. Скачать интерпретатор можно с официального сайта python.org, Flask доступен через репозиторий PyPI.

Установка Flask на Linux и macOS

Терминал Linux Mac — успешная установка Flask через менеджер пакетов

Откройте терминал и проверьте версию Python:

python3 —version

Создайте папку проекта и виртуальное окружение:

mkdir my_flask_app && cd my_flask_app

python3 -m venv .venv

source .venv/bin/activate

Теперь установите Flask:

pip install flask

Проверьте результат:

python -m flask —version

Создайте файл app.py с минимальным кодом (разберём его в следующем разделе) и запустите:

python app.py

Приложение откроется по адресу localhost:5000 в браузере. Чтобы выйти из виртуального окружения, введите deactivate.

Как установить Flask Python на Windows

PowerShell Windows — активация виртуального окружения venv для Flask

На Windows установка требует нескольких дополнительных шагов по сравнению с Linux.

Шаг 1. Скачайте Python с python.org. При установке обязательно поставьте галочку «Add Python to PATH» — без этого Python не будет распознан в командной строке.

Шаг 2. Откройте PowerShell (Win + X → Windows PowerShell) и создайте папку проекта:

mkdir my_flask_app

cd my_flask_app

Шаг 3. Создайте виртуальное окружение и активируйте его:

python -m venv .venv

.venv\Scripts\activate

После активации в строке ввода появится префикс (.venv) — это означает, что все пакеты теперь устанавливаются в изолированную среду проекта, а не глобально в систему.

Шаг 4. Установите Flask и проверьте версию:

pip install flask

python -m flask —version

Если Python или pip не распознаются — откройте: Панель управления → Система → Дополнительные параметры системы → Переменные среды. Python должен быть прописан в переменной PATH. Именно здесь чаще всего спотыкаются новички, а большинство русскоязычных туториалов эту особенность Windows не объясняют.

Виртуальное окружение venv — зачем нужно и как создать

Виртуальное окружение — инструмент изоляции зависимостей отдельного проекта от остальной системы.

Без него все пакеты устанавливаются глобально. Проблема возникает, когда два проекта требуют разные версии одного пакета: проект А работает на Flask 2.3, проект Б — на Flask 3.1. Глобальная установка не хранит обе версии одновременно: появляются конфликты между библиотеками и несовместимость зависимостей. Виртуальное окружение решает это полностью — у каждого проекта свой изолированный набор пакетов.

Команды для создания и управления venv:

# Создать

python3 -m venv .venv

# Активировать (Linux/macOS)

source .venv/bin/activate

# Активировать (Windows)

.venv\Scripts\activate

# Деактивировать (любая платформа)

deactivate

Договорённость в сообществе: называть папку .venv или env. Добавьте .venv в файл .gitignore — тысячи служебных файлов окружения не должны попадать в репозиторий. Создавайте отдельное виртуальное окружение для каждого проекта.

Первое приложение на Flask — Hello World за 10 строк

Структура Flask-проекта: главный файл, шаблоны, статика, модели

Минимальное Flask-приложение — 10 строк кода. Создайте файл app.py:

from flask import Flask # импорт класса Flask из пакета

app = Flask(__name__) # __name__ помогает Flask найти /templates и /static

@app.route(‘/’) # декоратор связывает URL ‘/’ с функцией

def index():

return ‘Привет, мир!’ # Flask вернёт эту строку в браузер

if __name__ == ‘__main__’:

app.run(debug=True) # запуск; debug=True — автоперезагрузка при изменениях

Запустите: python app.py. Откройте браузер: localhost:5000.

Браузер показывает первое веб-приложение Flask Python — страница Привет мир

Что происходит внутри:

  • Flask(__name__) создаёт экземпляр приложения; __name__ сообщает Flask, где искать шаблоны и статические файлы.
  • @app.route(‘/’) — декоратор (конструкция Python для оборачивания функции) привязывает URL к обработчику.
  • app.run(debug=True) запускает встроенный сервер разработки с автоматическим рестартом при изменении кода.

⚠️ debug=True — только для разработки. В production это значение должно быть False.

По мере роста проекта структура папок выглядит так:

my_flask_app/

├── app.py # главный файл приложения

├── /templates # HTML-шаблоны Jinja2

├── /static # CSS, JavaScript, изображения

├── config.py # настройки приложения

└── models.py # модели данных

Ключевые концепции Flask для начинающих

Три концепции лежат в основе любого Flask-приложения: маршрутизация, шаблоны и обработка HTTP-запросов. Без них нельзя построить даже простой сайт. Каждую разберём отдельно — с примером кода, от простого к сложному.

Маршрутизация через декоратор @app.route

Маршрутизация связывает URL-адрес с Python-функцией. В Flask за это отвечает декоратор @app.route. Декоратор — конструкция Python, которая изменяет поведение функции без изменения её кода.

@app.route(‘/’)

def index():

return ‘Главная страница’

@app.route(‘/about’)

def about():

return ‘О нас’

@app.route(‘/user/<username>’) # <username> — динамический параметр из URL

def profile(username):

return f’Профиль: {username}’

HTTP-методы указываются явно в параметре methods:

@app.route(‘/login’, methods=[‘GET’, ‘POST’])

def login():

if request.method == ‘POST’:

pass # обработка отправленной формы

return render_template(‘login.html’)

GET используется для получения страниц и данных; POST — для отправки форм на сервер.

Функция url_for(‘index’) генерирует URL по имени Python-функции — это обратная маршрутизация. Если URL-структура изменится, не придётся переписывать все ссылки вручную: достаточно обновить один маршрут.

Шаблоны Jinja2 и функция render_template

Jinja2 — шаблонизатор (инструмент для вставки данных Python в HTML-файлы), встроенный во Flask. Flask ищет шаблоны автоматически в папке /templates.

Базовый синтаксис Jinja2:

  • {{ переменная }} — вывести значение переменной;
  • {% for item in list %} — цикл по списку;
  • {% if condition %} — условие.

Ребенок хочет изучать программирование? Пусть начнёт с реальных проектов

На курсе школьники создают Telegram-бота, сайт и веб-приложение

  • Бесплатно — 0 ₽ за обучение
  • Портфолио — 4 готовых проекта
  • 7–11 классы — Онлайн, с нуля
Оставить заявку
image

Функция render_template() передаёт данные из Python в HTML и обеспечивает рендеринг шаблона:

@app.route(‘/users’)

def users():

users_list = [‘Алексей’, ‘Мария’, ‘Иван’]

return render_template(‘users.html’, users=users_list)

В файле templates/users.html:

{% for user in users %}

<p>{{ user }}</p>

{% endfor %}

Наследование шаблонов позволяет создать единый макет base.html с общей шапкой и подвалом, а в дочерних шаблонах переопределять только нужный блок — динамическое содержимое:

{% extends «base.html» %}

{% block content %}

<h1>Список пользователей</h1>

{% endblock %}

Шапка и подвал прописываются один раз. Копировать на каждую страницу их не нужно.

Обработка GET и POST запросов

Объект request содержит данные входящего HTTP-запроса. Импортируется из пакета Flask:

from flask import Flask, request, jsonify

@app.route(‘/search’)

def search():

query = request.args.get(‘q’, ») # GET-параметр из URL: /search?q=flask

return f’Поиск: {query}’

@app.route(‘/submit’, methods=[‘POST’])

def submit():

name = request.form[‘name’] # поле формы из POST-запроса

return f’Получено: {name}’

Функция jsonify() возвращает ответ в формате JSON (JavaScript Object Notation — текстовый формат обмена данными) — основной инструмент при построении REST API:

@app.route(‘/api/status’)

def api_status():

return jsonify({‘status’: ‘ok’, ‘version’: ‘1.0’})

Для кастомных страниц ошибок используйте декоратор @app.errorhandler:

@app.errorhandler(404)

def not_found(e):

return render_template(‘404.html’), 404

Страница 404 создаётся как обычный Jinja2-шаблон — никаких специальных настроек не нужно.

Работа с базой данных во Flask

Flask не включает встроенную СУБД (систему управления базами данных) — это осознанное решение. Разработчик подключает нужную базу через расширение.

ORM (объектно-реляционный маппер, Object-Relational Mapping) — прослойка между Python-кодом и SQL: вместо написания запросов вручную вы работаете с классами и объектами Python. Основное расширение для подключения базы данных — Flask-SQLAlchemy.

Для разработки обычно используют SQLite — она встроена в Python и не требует установки отдельного сервера. Для production — PostgreSQL.

SQLite для разработки — первые шаги с Flask-SQLAlchemy

SQLite встроена в Python: устанавливать сторонние сервисы не нужно, вся база хранится в одном файле.

pip install flask-sqlalchemy

Настройка подключения и создание модели данных:

from flask import Flask

from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

app.config[‘SQLALCHEMY_DATABASE_URI’] = ‘sqlite:///database.db’

db = SQLAlchemy(app)

class User(db.Model): # модель = таблица в базе данных

id = db.Column(db.Integer, primary_key=True)

username = db.Column(db.String(80), unique=True, nullable=False)

email = db.Column(db.String(120), unique=True, nullable=False)

CRUD-операции (Create, Read, Update, Delete — создание, чтение, обновление, удаление) через SQLAlchemy:

# Создать

new_user = User(username=’alex’, email=’alex@mail.ru’)

db.session.add(new_user)

db.session.commit()

# Прочитать

user = User.query.filter_by(username=’alex’).first()

# Удалить

db.session.delete(user)

db.session.commit()

Инициализация базы данных через Flask shell:

flask shell

>>> db.create_all()

PostgreSQL для production и миграции Flask-Migrate

PostgreSQL — production-grade СУБД с поддержкой сложных запросов, транзакций и высокой нагрузки. Для подключения нужен драйвер:

pip install psycopg2-binary

URI подключения в конфигурации:

app.config[‘SQLALCHEMY_DATABASE_URI’] = ‘postgresql://user:password@localhost/dbname’

Flask-Migrate решает задачу, которую разработчики часто недооценивают. При изменении схемы таблицы — добавлении колонки, переименовании поля — команда db.create_all() не трогает существующие таблицы. Без миграций базы данных придётся удалять и пересоздавать их вручную: в production это равнозначно потере данных. Flask-Migrate предотвращает это, версионируя схему через отдельные скрипты:

pip install flask-migrate

flask db init # создаёт папку migrations (один раз)

flask db migrate -m «добавлена колонка email» # создаёт скрипт изменений

flask db upgrade # применяет изменения к базе данных

Откатить миграцию: flask db downgrade.

Запуск Flask в production через Gunicorn

Схема WSGI-архитектуры Flask: браузер — сервер — фреймворк — база данных

Встроенный сервер разработки Flask — однопоточный. Он обрабатывает запросы по одному, нестабилен под нагрузкой и сам предупреждает при каждом запуске: «Do not use it in a production deployment» (не использовать для production-развёртывания).

Для production нужен WSGI-сервер. WSGI (Web Server Gateway Interface) — стандарт интерфейса между веб-сервером и Python-приложением; Flask изначально построен по этому стандарту, поэтому совместим с любым WSGI-совместимым сервером.

Gunicorn (Green Unicorn) — наиболее распространённый выбор для Flask:

pip install gunicorn

gunicorn -w 4 -b 0.0.0.0:5000 app:app

Параметры запуска:

  • -w 4 — четыре параллельных воркера (рабочих процесса); рекомендуемая формула: 2 × количество CPU + 1;
  • -b 0.0.0.0:5000 — адрес и порт для приёма запросов;
  • app:app — имя модуля (app.py) и переменной Flask-приложения.

Перед запуском через Gunicorn убедитесь, что debug=False. Схема работы: браузер отправляет запрос → Gunicorn принимает и распределяет между воркерами → Flask обрабатывает логику → ответ возвращается через Gunicorn обратно в браузер. База данных подключается на уровне Flask-приложения отдельно.

Ресурсы для изучения Flask — документация и курсы

Роадмап Flask Python: 6 шагов обучения от основ до деплоя в продакшн

Официальная документацияflask.palletsprojects.com. Написана на английском, структурирована по разделам: Quick Start, Patterns, Deployment. Для русскоязычных материалов — Хабр: там большая коллекция туториалов и переводов по Flask.

Онлайн-среды без установки. Попробовать Flask без Python на локальном компьютере можно через PythonAnywhere или Replit: оба сервиса запускают Python прямо в браузере — без pip, venv и настройки окружения. Удобно для первого знакомства с возможностями фреймворка. Для полноценной разработки нужна локальная среда.

Роадмап (roadmap — карта обучения) Flask для начинающих:

  1. Основы Python — переменные, функции, классы.
  2. Маршруты — @app.route, HTTP-методы, параметры URL.
  3. Шаблоны — Jinja2, render_template, наследование.
  4. База данных — Flask-SQLAlchemy, SQLite, CRUD-операции.
  5. Авторизация — Flask-Login, Flask-WTF, сессии.
  6. Деплой (deploy — развёртывание приложения на сервере) — Gunicorn, production-конфигурация.

Курс «Программирование: Уверенный старт» охватывает именно этот путь в третьем модуле: веб-приложения с Flask, шаблоны Jinja2 и база данных SQLite. Формат — онлайн, из любой точки России, бесплатно (0 ₽ вместо 50 000 ₽). Записи занятий доступны в личном кабинете в любое время. Подробнее — на странице курса.

Часто задаваемые вопросы

Flask — это библиотека или фреймворк?

Flask технически является микрофреймворком: он управляет структурой приложения и потоком запросов, а не просто предоставляет набор функций. Библиотеку разработчик вызывает сам; фреймворк задаёт, как организован проект: папки /templates и /static, система маршрутов через @app.route. В разговорной речи Flask называют «библиотекой» — это не критичная ошибка, но технически точнее именно «микрофреймворк».

Можно ли попробовать Flask без установки на компьютер?

Да. PythonAnywhere и Replit позволяют запустить Flask прямо в браузере — без Python, venv и pip на локальной машине. Достаточно зарегистрироваться, создать Python-файл и написать from flask import Flask. Удобно для первого знакомства с возможностями фреймворка. Для полноценной разработки рекомендуется локальная среда с виртуальным окружением.

В чём главное отличие Flask от Django?

Flask — микрофреймворк: минимальный набор инструментов и максимальная свобода архитектуры. Django — full-stack (полный стек): встроенные ORM, административная панель, авторизация. Выбирайте Flask для REST API, микросервисов и нестандартной архитектуры. Django — для крупных монолитов, когда важна скорость старта без ручного подбора каждого компонента.

Зачем нужно виртуальное окружение при работе с Flask?

Без venv все пакеты устанавливаются глобально. Если два проекта используют разные версии Flask или SQLAlchemy — возникнут конфликты зависимостей. Виртуальное окружение изолирует зависимости каждого проекта. Создаётся командой python3 -m venv .venv, активируется одной командой, деактивируется через deactivate. Рекомендуется создавать отдельный venv для каждого проекта.

Нужно ли знать HTML для работы с Flask?

Базовые знания HTML необходимы: Flask через Jinja2 генерирует HTML-страницы. Понимание тегов, форм и структуры документа поможет работать с шаблонами. Для стилизации достаточно подключить Bootstrap (готовая библиотека CSS-компонентов) через CDN (Content Delivery Network — сеть серверов для быстрой доставки файлов) — одна строка в <head> шаблона даёт доступ к кнопкам, формам и адаптивной сетке.

Зачем нужен Gunicorn, если Flask сам запускает сервер?

Встроенный Flask dev-сервер однопоточный и нестабилен под нагрузкой — Flask сам предупреждает в консоли: «Do not use it in a production deployment». Gunicorn — WSGI-сервер, который обрабатывает несколько запросов параллельно. Запуск: gunicorn -w 4 -b 0.0.0.0:5000 app:app, где -w 4 означает четыре параллельных воркера.

Что такое Jinja2 и как он связан с Flask?

Jinja2 — шаблонизатор, встроенный во Flask. Он вставляет данные Python в HTML: {{ переменная }} заменяется реальным значением при рендеринге страницы. Наследование шаблонов через {% extends «base.html» %} позволяет создать единый макет и не дублировать шапку и подвал на каждой странице сайта.

С чего начать изучение Flask с нуля?

Оптимальный путь: освойте Python (переменные, функции, классы) → установите Flask в виртуальное окружение → напишите Hello World → изучите маршрутизацию и Jinja2 → подключите SQLite через Flask-SQLAlchemy → реализуйте авторизацию → разверните через Gunicorn. Курс «Программирование: Уверенный старт» проходит этот путь в Модуле 3 (Flask, Jinja2, SQLite) — бесплатно, с реальными проектами в портфолио. Подробнее на странице курса.

Пусть ребёнок сделает первый IT-проект уже в этом месяце

Бесплатный онлайн-курс с понятной программой, поддержкой и проектами для портфолио

  • Онлайн
  • 4 недели
  • Бесплатно
  • Школьникам 7–11 классов
Подать заявку
icon