Событие template_rendered
Событие template_rendered относится к сигналам Flask
и срабатывает после того, как шаблон был успешно отрендерен
функцией render_template или методом render_template_string.
Сигнал передаёт два аргумента: sender - приложение Flask,
и template - объект шаблона, а также context -
словарь контекста, переданный в шаблон. Событие удобно использовать
для логирования, отладки и профилирования рендеринга.
Синтаксис
from flask import template_rendered
template_rendered.connect(func, app)
Пример
Давайте подключим обработчик к событию template_rendered
и выведем имя отрендеренного шаблона:
from flask import Flask, render_template, template_rendered
app = Flask(__name__)
def log_template(sender, template, context, **extra):
print('rendered:', template.name)
template_rendered.connect(log_template, app)
@app.route('/')
def index():
return render_template('index.html', text='hello')
Шаблон для примера:
<p>{{ text }}</p>
Результат выполнения кода в консоли:
"rendered: index.html"
Пример
Давайте сохраним контекст шаблона в список для последующего анализа:
from flask import Flask, render_template, template_rendered
app = Flask(__name__)
history = []
def collect(sender, template, context, **extra):
history.append({'name': template.name, 'context': context})
template_rendered.connect(collect, app)
@app.route('/')
def index():
return render_template('index.html', text='abcde')
Шаблон для примера:
<p>{{ text }}</p>
Результат выполнения кода для переменной history:
[{'name': 'index.html', 'context': {'text': 'abcde'}}]
Смотрите также
-
событие
before_render_template,
которое срабатывает до рендеринга шаблона -
класс
Signal,
который представляет собой сигнал Flask -
метод
connect,
который подключает обработчик к сигналу -
метод
disconnect,
который отключает обработчик от сигнала