我想基于变量指向不同的HTML文件。我使用以下格式的include:
{% include 'templates/case/{{cid}}/intro.html' %}
这会引发错误:
TemplateNotFound: templates/case/{{cid}}/intro.html
看着这个我知道Jinja2在运行时没有解析变量。 cid = ABC
的值(ABC是路径中的文件夹名称),因此我预计总路径为:
templates/case/ABC/intro.html
如果我直接在包含它使用这个解决的路径它是有效的。
我该如何解决这个问题?
答案 0 :(得分:12)
至少在Jinja2 2.7.1中,这有效:
{% include 'templates/case/%s/intro.html' % cid %}
答案 1 :(得分:8)
以下是直接通过include
传递代码的方法{% include "templates/case/"+cid+"/intro.html" %}
答案 2 :(得分:4)
在另一个Stack Overflow问题here中找到答案:
{% set path = 'templates/case/' + cid + '/intro.html' %}{% include path %}
答案 3 :(得分:3)
您始终可以在视图代码中计算完整路径并将其传递给模板,此时,删除变量周围的任何引号和花括号。
在执行此操作时,请注意path traversal attacks。