Микрофреймворк Flask Python: особенности и документация

Микрофреймворк Flask Python: особенности и документация

Рассказываем об особенностях популярного микровеб-фреймворка Flask, предназначенного для разработки на Python, и приводим список полезных ресурсов с его документацией и руководствами, в том числе на русском языке.

Что такое Flask

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

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

Особенности Flask

  • Модульный фреймворк, в котором весь необходимый функционал подключается с помощью внешних библиотек и плагинов.
  • Даёт полный контроль над проектом.
  • Требует установки сторонних приложений и дополнительной настройки на начальном этапе и в процессе работы над проектом. Настройка приложения для простых проектов не займёт много времени; но на подключение дополнительных функций и плагинов для сложных проектов его может понадобиться ощутимо больше.
  • Подходит для проектов любых размеров, преимущественно с нетипичными требованиями.
  • Отсутствует встроенная поддержка СУБД, но с помощью соответствующих расширений можно использовать реляционные базы данных; также фреймворк подходит для проектов с NoSQL или без баз данных.
  • Есть встроенная поддержка виртуальной отладки.
  • Обширная документация, в том числе на русском языке; большое количество руководств и обучающих материалов.

Структура проекта

Полнофункциональные фреймворки создают довольно сложную, разветвлённую структуру, например, типичный проект Django с одним приложением выглядит так:

django-project
├── config
│   ├── __init__.py
│   ├── asgi.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.js
└─── app
    ├── __init.py
    ├── admin.py
    ├── apps.py
    ├── models.py
    ├── tests.py
    ├── urls.py
    └── views.py

При этом Flask, как микрофреймворк, изначально может создать всего один файл приложения:

flask-project
└── app.py

Содержимое единственного файла, достаточное для начала разработки:

# app.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
   return '<h1>Hello World!</h1>'
@app.route('/user/<name>')
def user(name):
   return '<h1>Hello, {}!</h1>'.format(name)

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

Расширения

С Flask разработчик может выбирать компоненты своего приложения или даже писать собственные, так как фреймворк изначально разрабатывался с расчётом на расширение.

Расширения — это дополнительные пакеты, которые добавляют функциональность приложению. Например, расширение может добавлять поддержку отправки электронной почты или подключения к базе данных. Некоторые расширения добавляют целые новые фреймворки для помощи в создании определённых типов приложений, таких как REST API. Расширения Flask обычно называются «Flask-Foo» или «Foo-Flask», а их установка и настройка в большинстве случаев практически одинаковы.

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

Шаблоны

Flask не содержит собственного шаблонизатора, но он поставляется с зависимостью от шаблонизатора Jinja2, что упрощает работу.

Административная панель

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

Формы

Чтобы использовать формы, нужно установить расширение WTForms следующей командой:

pip install flask-wtf

В WTForms каждая веб-форма является классом, который наследуется от класса FlaskForm, поля формы являются переменными класса. К каждому объекту поля может быть прикреплён один или несколько валидаторов.

Базы данных

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

Аутентификация

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

  • Flask-Login, которая обеспечивает управление сеансами пользователей.
  • Werkzeug — позволяет хеширование и проверку.
  • Itsdangerous — инструменты для передачи данных в ненадёжные среды и их возврата в целости и сохранности. Данные криптографически подписаны, чтобы гарантировать, что токен не был подделан.

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

Полезные ресурсы: информация о плагинах, документация, руководства на русском

  1. Официальный реестр расширений Flask 
  2. Официальная англоязычная документация
  3. Документация Flask (русский перевод-2018) 
  4. Ещё один перевод документации на русский язык (учебник по Flask Мигеля Гринберга, обновлённое издание 2024 года)
  5. Руководства для новичков на английском:
  1. Простые видеоинструкции на русском языке 

Подведём итоги

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

Читайте в блоге:

Что будем искать? Например,VPS-сервер

Мы в социальных сетях