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

Событие 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,
    который отключает обработчик от сигнала
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить