API командной строки Flask

Flask построил свой инструмент командной строки на Click.

С помощьюflaskЗапускайте приложения и управляйте задачами с помощью команд.

Все классы CLI находятся вflask.cliв модуле.


FlaskGroup

Основная группа команд Flask. Черезflaskиспользование команды.

Параметр Описание
add_default_commands=True Добавлять ли команды по умолчанию, такие как run, shell, routes
create_app=None Функция фабрики приложения, возвращает экземпляр Flask
add_version_option=True Добавлять ли опцию --version
load_dotenv=True Загружать ли файлы .env и .flaskenv
set_debug_flag=True Следует ли устанавливать флаг отладки на основе переменных окружения

AppGroup

Базовый класс для групп CLI-команд приложения и blueprint. Черезapp.cliилиbp.cliдобавляйте пользовательские команды.

Методы Описание
command(*args, **kwargs) Регистрирует CLI-команды. По умолчанию автоматически оборачивает в with_appcontext
group(*args, **kwargs) Регистрирует группы подкоманд. По умолчанию в качестве класса группы используется AppGroup.

AppGroup.command() включён по умолчаниюwith_appcontext=True, что означает, что ваши функции команд автоматически получают контекст приложения. Если это не нужно, передайтеwith_appcontext=False。


ScriptInfo

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

Свойство Описание
app_import_path Путь импорта приложения (значение опции --app)
create_app Функция-фабрика приложения
data Словарь произвольных дополнительных данных
load_app() Загружает и возвращает экземпляр приложения Flask

Вспомогательные функции

Функция Описание
with_appcontext(f) Декоратор. Обеспечивает выполнение декорируемой функции в контексте приложения
pass_script_info(f) Декоратор. Передаёт экземпляр ScriptInfo в функцию в качестве первого аргумента
load_dotenv(path) Загружает переменные окружения из файла .env

Команды по умолчанию

Команда Описание Общие параметры
flask run Запустите сервер разработки --host, --port, --debug, --reload/--no-reload
flask shell Запустить интерактивную оболочку Python Shell Автоматически загружать контекстные переменные, такие как app, g
flask routes Показать все зарегистрированные маршруты --sort (endpoint/methods/domain/rule/match), --all-methods

Стандартные опции

Параметры Описание
-A / --app IMPORT Укажите модуль и экземпляр приложения, например "app:create_app()"
--debug / --no-debug Включить/отключить режим отладки
-e / --env-file FILE Укажите путь к файлу .env
--version Показать версии Flask и зависимостей

Примеры кода

Пример

from flask import Flask

app = Flask(__name__)

# Регистрация пользовательских команд
@app.cli.command("init-db")
def init_db_command():
    """Инициализировать базу данных"""
    print("База данных инициализирована.")

# Регистрация команды с аргументами
@app.cli.command("greet")
@app.cli.option("--name", "-n", default="ПРИМЕР", help="Цель приветствия")
def greet_command(name):
    """Отправить приветствие"""
    print(f"Привет, {name}!")

# Зарегистрировать группу подкоманд
user_cli = app.cli.group("user")

@user_cli.command("list")
def list_users():
    """Список всех пользователей"""
    print("Вывод списка пользователей...")

@user_cli.command("create")
@user_cli.option("--username", required=True)
def create_user(username):
    """Создать нового пользователя"""
    print(f"Создание пользователя: {username}")

# Использование:
# flask init-db
# flask greet --name World
# flask user list
# flask user create --username example
Другие расширения