我可以根据一个变量包含一个文件吗?

问题描述 投票:0回答:1

我想动态地包含一个模板文件,但在包含声明中,变量没有出现展开。怎样做最好?

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

我得到的错误是

jinja2.exceptions.TemplateNotFound: {{文件}}.txt

jinja2
1个回答
0
投票

下面的代码对我来说是可行的。

我想澄清一下,有一个 "." 可能会产生一个问题,所以最好将整个文件名连同扩展名一起传给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
© www.soinside.com 2019 - 2024. All rights reserved.