РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
625 of 643 menu

Декоратор with_appcontext

Декоратор with_appcontext применяется к функциям, которые регистрируются как команды Flask CLI. По умолчанию команды запускаются вне контекста приложения, поэтому обращение к current_app, g или базе данных приводит к ошибке. Данный декоратор помещает выполнение функции внутрь контекста приложения. Параметров у декоратора нет - он просто оборачивает декорируемую функцию.

Синтаксис

@with_appcontext

Пример

Давайте создадим команду, которая читает значение из конфигурации приложения. Без контекста это вызвало бы ошибку, поэтому применим with_appcontext:

from flask import Flask from flask.cli import with_appcontext import click app = Flask(__name__) app.config['GREETING'] = 'hello' @app.cli.command('greet') @with_appcontext def greet(): from flask import current_app click.echo(current_app.config['GREETING'])

Запустим команду в терминале:

flask greet

Результат выполнения кода:

hello

Пример

Давайте получим список маршрутов приложения внутри команды. Для доступа к app.url_map нужен контекст приложения:

from flask import Flask from flask.cli import with_appcontext import click app = Flask(__name__) @app.route('/') def index(): return 'hello' @app.cli.command('show-routes') @with_appcontext def show_routes(): from flask import current_app for rule in current_app.url_map.iter_rules(): click.echo(rule.rule)

Запустим команду в терминале:

flask show-routes

Результат выполнения кода:

/ /static/<path:filename>

Смотрите также

  • команда flask run,
    которая запускает сервер разработки
  • команда flask shell,
    которая открывает интерактивную оболочку
  • команда flask routes,
    которая показывает список маршрутов
  • декоратор command,
    который регистрирует команду CLI
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить