Python: Веб-разработка (Flask)
2026-02-26 17:09 Diff

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

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

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

Возможности Flask

Микрофреймворк Flask умеет:

  • Разбирать запросы и производить маршрутизацию по адресу, глаголу HTTP, параметрам запроса
  • Формировать ответы на запросы, которые содержат нужные статус, заголовки, cookies, данные в необходимом формате, например: текст, JSON
  • Работать с сессиями
  • Удобно вызывать шаблонизатор для формирования ответа

При этом с помощью Flask нельзя:

  • Работать с данными в базе данных — не содержит встроенной ORM
  • Формировать интерфейс администратора — administrator interface, админка
  • Обрабатывать формы ввода данных и валидацию этих данных

Чтобы добавить эти и другие возможности в приложение, нужно подключить внешние библиотеки. Ознакомиться с полным перечнем библиотек и их возможностями можно на странице pypi.org.

Создание минимального Flask-приложения

Чтобы создать минимальное Flask-приложение, нужно выполнить следующие шаги:

  1. Создать новый python-проект в директории hexlet-flask-example и добавить в зависимости Flask
  2. Создать в корне директории модуль example.py со следующим содержимым:

Разберем код выше подробнее:

  1. Импортируем класс-инициализатор Flask. Его экземпляр и будет нашим WSGI-приложением:

  2. Инстанцируем экземпляр, где класс принимает первым аргументом имя модуля нашего приложения __name__. Это нужно, чтобы Flask знал, где искать шаблоны и статические файлы:

  3. Используем декоратор route(), который связывает функцию-обработчик с конкретным адресом нашего сайта. Об обработчиках и роутинге поговорим в следующих уроках:

  4. Функция-обработчик возвращает ответ, который выведется в браузере:

Запуск с помощью development-сервера

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

Запустим приложение встроенным сервером. Введем в терминале следующие команды:

Здесь команда задает модуль, в котором объявлен объект WSGI-приложения и запускает сервер разработчика — developing server. Создадим файл Makefile в корне проекта и добавим туда задачу start:

Выполним запуск:

Вывод будет таким:

Flask предупреждает, что в данный момент запущен сервер разработчика, а в реальных условиях понадобится «промышленный» WSGI-сервер — production WSGI server.

Пока мы не остановим сервер нажатием Ctrl+C, в браузере по адресу http://127.0.0.1:8000/ можно будет увидеть текст «Welcome to Flask!».

Режим отладки

Если в приложении случится ошибка, то мы увидим заготовленное сообщение с подобным текстом: "Internal Server Error". Но во время разработки хочется видеть вывод ошибки, и чтобы была возможность не перезапускать руками сервер при каждом изменении кода. И development-сервер это умеет, нужно только включить режим отладки:

Изменим тогда и команду в Makefile:

Когда мы перезапустим сервер, то вывод будет немного отличаться:

Теперь включен режим отладки — «Debugger is active!». С включенным отладчиком сообщения об ошибках будут отображаться прямо в браузере в удобном для просмотра виде. Про встроенный во Flask отладчик Werkzeug расскажем подробнее позднее.

Также теперь все изменения в коде будут автоматически перезапускать сервер. Например, попробуйте изменить выводимый текст на ‘Hello, Hexlet!’. Как только вы сохраните код, сервер перезагрузится, и вы увидите в браузере новое сообщение.

Вывод

В этом уроке мы познакомились с одним из наиболее популярных python-микрофреймворков — Flask, а также узнали его возможности. Еще мы научились создавать минимальное Flask-приложение и запускать его с помощью development-сервера. Также мы знаем, как включить режим отладки, чтобы сообщения об ошибках отображались прямо в браузере в удобном для просмотра виде.