Flask для начинающих

В данном цикле статей-уроков рассматривается создание простого сайта на микрофремворке Flask, его запуск на локальном компьютере и удаленном виртуальном сервере, то есть размещение сайта в Интернет.

Под "простым сайтом" здесь подразумевается создание на первом этапе готового flask-приложения без базы данных. Акцент сделан на использовании таких возможностей как шаблонизатор и роутер, облегчающих в том числе разработку и обслуживание сайтов, которые выглядят статично с клиентской стороны (информационные сайты без регистрации пользователей, возможности оставлять комментарии и др).

Если под "начинающими" понимать людей, которые не знакомы с программированием, то изучение любого фреймворка будет затруднительным, так как предполагает знание соответствующего языка программирования и сопутствующих технологий (области приложения фреймворка, в данном случае ‒ веб-технологий). Flask в этом смысле не является исключением. Вам должны быть знакомы HTML, CSS, работа в командной строке и, очевидно, язык Python.

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

В мини-курсе "Flask для начинающих" изложение адаптировано для начинающего программиста. В первой части (сайт без базы данных) кода на Питоне будет мало. Если вы знаете, что такое переменная, функция, условия, исключения на примере других языков, то этого может быть достаточно. Если вы не знакомы с HTML и CSS, рекомендуем хотя бы поверхностно изучить курс "Введение в веб-разработку и создание сайтов".

Во второй части курса рассматривается создание такого же сайта, как в первой. Однако вместо отдельных файлов-страниц сайта в проекте используется база данных. Для выполнения административных задач создается второе дополнительное flask-приложение, работающее с базой данных через форму HTML.

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

Текущая версия: июнь 2025 г.
Впервые опубликован: январь-апрель 2024 г.

Содержание курса

  1. Установка Flask
    Процесс установки микрофреймворка Flask, в том числе в виртуальной среде Python. Установка с помощью утилиты apt в Ubuntu. Просмотр версий установленных модулей Python. Обновление Flask.

  2. Запуск flask-приложения на локальном компьютере
    Фреймворк Flask имеет в своем составе веб-сервер, который позволяет запускать сайт (flask-приложение) на локальном компьютере. Находясь в каталоге проекта, выполним команду: flask --app имя_файла run --debug.

  3. Разбор простейшего flask-приложения. Функция render_template
    Главный файл flask-приложения. Функция render_template и html-шаблон. Разбор кода минимального приложения на flask.

  4. Jinja ‒ шаблонизатор для Python
    Фреймворк Flask включает в себя Jinja2 ‒ шаблонизатор, для которого в шаблонах используются элементы синтаксиса языка Python. Примеры наследования шаблона и передачи данных через аргументы render_template.

  5. Маршрутизация, декоратор route
    Маршрутизация во Flask выполняется с помощью декоратора route. В аргументе route() может быть переменная, которой присваивается часть URL. Переменная передается в связанную функцию-представление.

  6. Пример сайта на Flask с шаблоном HTML + CSS + JS
    Пример файловой структуры проекта сайта на фреймворке Flask с готовым html-шаблоном и таблицами стилей. Адаптивный дизайн с помощью JavaScript. Flask-приложение без базы данных.

  7. Кэширование. Расширение Flask-Caching
    Кэширование функций flask-приложения позволяет экономить ресурсы сервера. Выполняется с помощью декоратора cached() экземпляра Cache. Класс Cache входит в расширение Flask-Caching, которое устанавливается отдельно от фреймворка Flask.

  8. Создание статичного сайта с помощью flask-приложения
    С помощью flask-приложения можно создавать статичные сайты, генерируя готовые html-страницы. Для этого то, что возвращает render_template, записывается в файл. Преимущества: простая настройка удаленного веб-сервера, быстрота отдачи страниц (нет затрат на выполнение скриптов на стороне бэкенда).

  9. Вставка рекламы в статьи
    Способы добавления рекламных блоков на страницы веб-приложения на фреймворке Flask: непосредственно в шаблоны, подключение (include) файлов, вставка в результат вызова render_template().

  10. Сайт на Flask с базой данных
    Особенности разработки сайта с базой данных на фреймворке Flask. Вариант с созданием flask-приложения для администратора сайта. Подготовка шаблона для размещения в нем формы. Наследование шаблонов.

  11. Отправка формы методом POST. Объект request
    Форма HTML для добавления статьи в базу данных. Получение функцией-представлением данных, передаваемых методом POST. Доступ к полученным из формы значениям с помощью атрибута form объекта request модуля flask.

  12. Создание базы данных для сайта
    Пример набора таблиц и их схем на языке SQL (SQLite) для базы данных информационного сайта. Python-скрипт создания базы данных с таблицами. Подключение к базе данных из основного flask-приложения, пример извлечения данных и их передачи в jinja-шаблон.

  13. Объект request в Jinja
    Объект request модуля flask доступен в jinja-шаблонах. Обращаясь к записям request.form в html-код можно вставлять данные, полученные из формы при выполнении запроса страницы.

  14. Функции flash и get_flashed_messages
    С помощью функции flash() flask-приложение генерирует сообщения при возникновении тех или иных ситуаций. Они используются для обратной связи с пользователем сайта. В шаблоне сообщения можно вывести с помощью функции get_flashed_messages().

  15. Сохранение статьи в базе данных и ее получение оттуда
    Запись полученных из формы данных в базу данных сайта, редирект на созданную страницу, извлечение статьи из базы данных для заполнения формы.

  16. Редактирование статей сайта ‒ обновление записей в базе данных
    Пример кода обновления полей записи в базе данных при редактировании статьи сайта. Сохранение даты изменения страницы.

  17. Меню сайта
    Получение структуры-меню сайта путем составления sql-запросов к базе данных. Передача меню в Jinja-шаблон, пример циклического вывода в сайдбаре ссылок и их названий.

  18. Удаление статей из базы данных сайта
    Форма для удаления статьи с сайта и связанная с ней функция. Запрос SQL для удаления записи статьи из базы данных и связанных с ней других данных (дат). Перенаправление на главную страницу после удаления статьи.

  19. Изменение главного flask-приложения для работы с базой данных
    Flask-приложение, читающее данные из базы данных и передающее их в шаблон Jinja. Обновление меню сайта при изменении страниц. Генерация статичного файла с меню и его подключение к шаблону.

  20. Установка flask-приложения на веб-сервер Ubuntu + Apache
    Развертывание сайта на Flask на VPS с Ubuntu и веб-сервером Apache. Wsgi-модуль. Инструкции конфигурационного файла сайта. Возможные проблемы.