Передать переменные всем шаблонам Jinja2 с Flask

У меня есть таблица в навигационной системе моего webapp, которая будет заполняться обновленной информацией каждый раз, когда страница отображается. Как я мог избежать размещения следующего кода в каждом view ?

 def myview(): mydict = code_to_generate_dict() return render_template('main_page.html',mydict=mydict) 

mydict используется для заполнения таблицы. Таблица будет отображаться на каждой странице

Вы можете использовать консольные процессоры Flask для вставки глобалов в ваши шаблоны jinja

Вот пример:

 @app.context_processor def inject_dict_for_all_templates(): return dict(mydict=code_to_generate_dict()) 

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

Создайте свой собственный метод рендеринга, чтобы он не повторял этот код. Затем назовите его, когда вам нужно отобразить шаблон.

 def render_with_dict(template): mydict = code_to_generate_dict() return render_template(template, mydict=mydict) def myview(): return render_with_dict('main_page.html')