Событие message_flashed
Событие message_flashed относится к секции сигналов Flask
и срабатывает каждый раз, когда в приложении вызывается
функция flash. Это позволяет перехватывать
flash-сообщения до того, как они будут показаны пользователю
в шаблоне. Обработчик сигнала получает два аргумента:
sender - приложение Flask, отправившее сигнал,
и message - текст сообщения, переданный в flash.
Сигнал удобно использовать для логирования, аудита
или дополнительной обработки уведомлений. Подключить
обработчик можно через декоратор connect или
методом connect у самого сигнала.
Синтаксис
from flask import message_flashed
@message_flashed.connect
def handler(sender, message, **extra):
...
Пример
Давайте подключим обработчик сигнала message_flashed
и выведем сообщение в консоль при каждом вызове flash:
from flask import Flask, flash, message_flashed
app = Flask(__name__)
app.secret_key = 'secret'
@message_flashed.connect
def log_message(sender, message, **extra):
print('flashed:', message)
@app.route('/')
def index():
flash('hello')
return 'ok'
Результат выполнения кода при запросе к '/':
flashed: hello
Пример
Давайте соберём все flash-сообщения в список через обработчик сигнала и вернём его в ответе:
from flask import Flask, flash, message_flashed
app = Flask(__name__)
app.secret_key = 'secret'
collected = []
@message_flashed.connect
def collect(sender, message, **extra):
collected.append(message)
@app.route('/')
def index():
flash('article')
flash('user')
return ', '.join(collected)
Результат выполнения кода при запросе к '/':
article, user
Смотрите также
-
класс
Signal,
который представляет собой сигнал Flask -
метод
connect,
который подключает обработчик к сигналу -
метод
disconnect,
который отключает обработчик от сигнала -
событие
template_rendered,
которое срабатывает при рендере шаблона