Flask: легковесный веб-фреймворк
2025-07-11

Flask: легковесный веб-фреймворк

Читайте также:

Flask — это минималистичный и гибкий веб-фреймворк для Python, который позволяет быстро создавать веб-приложения любой сложности. Благодаря своей простоте, расширяемости и большому количеству расширений, Flask остаётся одним из самых популярных инструментов для веб-разработки на Python.

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

1. Преимущества Flask

  • Минимализм — Flask предоставляет только базовый функционал, позволяя разработчику самому выбирать необходимые компоненты. Это значит, что вы не тратите ресурсы на ненужные модули и используете только то, что действительно нужно вашему проекту.
  • Гибкость — легко настраивается под любые задачи, не навязывает архитектурных решений. Вы сами определяете структуру каталогов, подход к работе с базой данных, шаблонами и т.д.
  • Расширяемость — существует множество расширений для работы с БД, аутентификацией, миграциями и др. Flask легко интегрируется с внешними библиотеками.
  • Простота изучения — низкий порог входа, понятный и лаконичный API. Даже если вы только начинаете изучать веб-разработку, Flask будет отличным выбором.
  • Большое сообщество — множество обучающих материалов и готовых решений. Это облегчает поиск ответов на вопросы и ускоряет решение типовых задач.

2. Установка Flask

Перед началом работы убедитесь, что у вас установлен Python (рекомендуется версия 3.7 и выше). Flask устанавливается через менеджер пакетов pip. Откройте терминал и выполните команду:

pip install flask

Эта команда скачает и установит последнюю версию Flask и все необходимые зависимости. После установки вы сможете импортировать Flask в своих Python-скриптах.

3. Пример простого приложения на Flask

Рассмотрим, как создать минимальное веб-приложение на Flask. Создайте файл app.py со следующим содержимым:

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello():
    return "Привет от Flask!"

@app.route("/user/<username>")
def show_user(username):
    return f"Пользователь: {username}"

Подробное пояснение к коду:

  • from flask import Flask — импортируется основной класс Flask, необходимый для создания приложения.
  • app = Flask(__name__) — создаётся экземпляр приложения. Аргумент __name__ сообщает Flask, где искать ресурсы (шаблоны, статические файлы и т.д.).
  • @app.route("/") — декоратор, который регистрирует функцию как обработчик HTTP-запроса по адресу / (главная страница сайта).
  • def hello(): ... — функция, которая будет вызвана при обращении к главной странице. Она возвращает строку, которая отобразится в браузере.
  • @app.route("/user/<username>") — второй маршрут, который принимает параметр username из URL. Например, при переходе по адресу /user/ivan функция вернёт строку Пользователь: ivan.
  • def show_user(username): ... — функция-обработчик, которая получает значение параметра из URL и возвращает его в ответе.

Как запустить приложение

После того как вы сохранили код в файл app.py, запустите приложение командой:

flask run

Если вы запускаете Flask впервые, убедитесь, что переменная окружения FLASK_APP указывает на ваш файл (например, export FLASK_APP=app.py в Linux/macOS или set FLASK_APP=app.py в Windows). После запуска сервер будет доступен по адресу http://127.0.0.1:5000/.

Теперь вы можете открыть браузер и перейти по адресу http://127.0.0.1:5000/ — увидите приветственное сообщение. Если добавить к адресу /user/ваше_имя, например, /user/anna, то получите персонализированный ответ.

4. Расширения Flask

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

Наиболее популярные расширения:

  • Flask-SQLAlchemy — интеграция с базами данных через ORM SQLAlchemy. Позволяет работать с БД на уровне Python-объектов.
  • Flask-Migrate — управление миграциями схемы базы данных (создание, изменение таблиц и т.д.).
  • Flask-Login — простая реализация системы аутентификации пользователей.
  • Flask-WTF — удобная работа с веб-формами, валидация и защита от CSRF-атак.

Пример установки расширения

Чтобы добавить, например, поддержку работы с базой данных, установите расширение Flask-SQLAlchemy:

pip install flask-sqlalchemy

После установки вы сможете импортировать и использовать его в своём проекте:

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy(app)

Это позволит вам создавать модели данных и взаимодействовать с базой данных через Python-код, не используя SQL напрямую.

5. Сравнение с другими фреймворками

Сравнение популярных фреймворков для Python:

  • Flask: максимальный минимализм и гибкость, не поддерживает асинхронность, документация на хорошем уровне.

  • FastAPI: современный фреймворк с поддержкой асинхронности и автоматической документацией, отлично подходит для быстрых API и микросервисов.

  • Django: мощный фреймворк для крупных проектов с богатым функционалом "из коробки" (админка, ORM, аутентификация и др.), поддерживает асинхронность, отличная документация.

  • Flask — идеален для небольших и средних проектов, когда важна простота и контроль. Вы сами определяете архитектуру и используете только нужные компоненты.

6. Полезные ссылки

Заключение

Flask — отличный выбор для тех, кто ценит простоту, гибкость и минимализм. Он позволяет быстро создавать рабочие прототипы и масштабируемые приложения, предоставляя разработчику полный контроль над архитектурой. Благодаря большому количеству расширений и активному сообществу, Flask остаётся актуальным инструментом для веб-разработки на Python.

Если вы только начинаете знакомство с веб-разработкой или хотите быстро реализовать идею, Flask поможет вам сделать это с минимальными усилиями и максимальной свободой выбора инструментов.