Работа с двумя разными средами Jinja2 - PullRequest
0 голосов
/ 06 февраля 2019

Я создаю приложение Flask.В некоторых представлениях мне нужно работать с шаблонами LaTeX вместо HTML.

Можно создать еще одну среду Jinja2 и использовать функцию render_template, выбирающую среду для использования?

I'mиспользуя чертежи, и я хочу назначить папку шаблонов таким же образом, как я использую основную среду Jinja.

1 Ответ

0 голосов
/ 17 мая 2019

Вы можете использовать метод 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() и сделать то же самое.Я видел, как оба подхода успешно внедрены в производство.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...