Подтвердить что ты не робот

Flask + Jinja: передать данные базовому шаблону/всем шаблонам

У меня есть метод, который возвращает данные, которые необходимы в моем базовом шаблоне (контент для глобального нижнего колонтитула).

Как либо (1) передать переменную в базовый шаблон (какие другие шаблоны расширяют), либо (2) передать переменную во все шаблоны глобально без явного добавления ее в вызов render_template?

4b9b3361

Ответ 1

Из документов фляги: контекстные процессоры фляги

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

Пример из документов:

@app.context_processor
def inject_user():
    return dict(user=g.user)

Обратите внимание, что в этом примере используется переменная g, которая уже доступна в шаблонах.