Могу ли я включить файл на основе переменной - PullRequest
1 голос
/ 06 мая 2020

Я пытаюсь динамически включить файл шаблона, но переменная не раскрывается в объявлении включения. Как это лучше всего сделать?

{% for file in files %}
  {% include "{{ file }}.txt" %}
{% endfor %}

Я получаю следующую ошибку:

jinja2.exceptions.TemplateNotFound: {{file}}. Txt

1 Ответ

0 голосов
/ 06 мая 2020

У меня работает следующее.

Я хотел бы пояснить, что наличие "." в jinja2 может создать проблему, поэтому было бы лучше передать все имя файла с расширением в jinja2.

Использование двойных кавычек не приведет к отображению значения переменной, поэтому оно останется таким, как {{ file }}

Работает следующее:

from jinja2 import Environment, FileSystemLoader

data = '''
{% for file in files.split(",") %}
  {% include file %}
{% endfor %}
'''

template = Environment(loader=FileSystemLoader("templates/")).from_string(data)

msg = template.render(files="1.txt")

print(msg)

Вывод:

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