Вы можете использовать метод Jinja Environment.overlay
, чтобы скопировать настройки среды Flask, а затем вставить свой собственный загрузчик шаблонов, чтобы найти шаблон, специфичный для данного чертежа (даже если у них есть имя шаблона в другом месте приложения).
from jinja import ChoiceLoader
new_loader = ...
existing_loader = app.jinja_env.loader
new_environment = app.jinja_env.overlay(
loader=ChoiceLoader([new_loader, existing_loader]),
autoescape=select_autoescape(['html', 'xml'])
)
Здесь я определяю новый загрузчик шаблонов и вставляю его в начало порядка поиска Jinja.При этом сохраняются все остальные параметры среды Flask, включая такие переменные, как request
и app
.
. Кроме того, вы можете обернуть функцию Flask render_template()
и сделать то же самое.Я видел, как оба подхода успешно внедрены в производство.