Класс ScriptInfo
Класс ScriptInfo относится к секции cmd и предназначен для хранения
информации о скрипте, из которого было загружено приложение Flask.
Экземпляр этого класса создаётся автоматически при запуске CLI-команды
и передаётся в объект контекста click.Context как атрибут obj.
Класс хранит путь к загруженному приложению, имя функции-фабрики и
уже созданное приложение. Через атрибуты app_import_path,
create_app и load_app можно получить доступ к этим данным.
Основное применение класса - внутри собственных CLI-команд,
когда нужно получить объект приложения напрямую, не полагаясь
на декоратор with_appcontext.
Синтаксис
from flask.cli import ScriptInfo
info = ScriptInfo(app_import_path, create_app)
Первый параметр app_import_path задаёт путь до приложения
в формате 'module:app'. Второй параметр create_app -
это функция-фабрика, которая создаёт приложение.
Пример
Давайте создадим экземпляр класса ScriptInfo вручную и
загрузим приложение через его метод load_app:
from flask import Flask
from flask.cli import ScriptInfo
def create_app():
app = Flask(__name__)
return app
info = ScriptInfo('app:create_app', create_app)
app = info.load_app()
print(app.name)
Результат выполнения кода:
"app"
Пример
Давайте получим объект ScriptInfo внутри собственной
CLI-команды через контекст click и выведем путь импорта приложения:
import click
from flask import Flask
from flask.cli import ScriptInfo
app = Flask(__name__)
@app.cli.command('info')
@click.pass_context
def info(ctx):
script_info = ctx.obj
click.echo(script_info.app_import_path)
if __name__ == '__main__':
app.run()
Запустим команду в терминале:
flask info
Результат выполнения команды:
"app"
Смотрите также
-
класс
AppGroup,
который группирует CLI-команды приложения -
метод
load_app,
который загружает приложение из объекта ScriptInfo -
декоратор
with_appcontext,
который помещает приложение в контекст команды -
команду
flask routes,
которая выводит список маршрутов приложения