jinja2 включает файл с переменной - PullRequest
0 голосов
/ 18 сентября 2018

Я пытаюсь изменить довольно тяжелый шаблон с jinja2, и я застрял на включении.

Такое поведение я ожидаю :

<h1>{{ key }} </h1>
{% set file = key | include_text %}
{% include file %}

Пользовательский фильтр возвращает строку, подобную этой:

texts/my_include.html

Но вместо этого я получил эту ошибку :

jinja2.exceptions.TemplatesNotFound: Tried to select from an empty list of templates

Какой-то хак, который я уже пробовал:

  • Поместите шаблоны в ту же папку и удалите 'text /' из возвращенной строки
  • Добавьте путь в загрузчик Env

Но он продолжает посылать эту ошибку

Теперь мне интересно, разрешает ли jinja2 эту реализацию или мне придется оставить этот шаблон таким, каким он был (даже если это займеточень долгое время для генерации).

Кто-нибудь знает о какой-то хитрости здесь?

1 Ответ

0 голосов
/ 18 сентября 2018

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

Вот мой пользовательский фильтр:

  @environmentfilter
  def include_text(ctx, key):
    res_dict = {
      'key_value_1' : 'file_name_1',
      'key_value_2' : 'file_name_2'
    }
    try:
      return "texts/" + res_dict[key] + ".html"
    except KeyError:
      return "texts/empty.html"

Теперь первое решение, которое я пробовал, работает нормально.

...