14

我想基于变量指向不同的 HTML 文件。我正在使用以下格式的包含:

{% include 'templates/case/{{cid}}/intro.html' %}

这会引发错误:

TemplateNotFound: templates/case/{{cid}}/intro.html

看着这个我知道 Jinja2 不会在运行时解析变量。cid = ABC(ABC 是路径中的文件夹名称)的值,所以我希望总路径为:

templates/case/ABC/intro.html

如果我直接在包含中使用这个解析的路径,它就可以工作。

我该如何解决这个问题?

4

4 回答 4

17

至少在 Jinja2 2.7.1 这有效:

{% include 'templates/case/%s/intro.html' % cid %}
于 2015-02-26T10:03:07.773 回答
10

Here's how to pass the code directly through include

{% include "templates/case/"+cid+"/intro.html" %}
于 2014-05-08T13:28:08.757 回答
6

在此处的另一个 Stack Overflow 问题中找到了答案:

{% set path = 'templates/case/' + cid + '/intro.html' %}{% include path %}
于 2013-10-14T21:08:59.940 回答
3

您始终可以在视图代码中计算完整路径并将其传递给模板,此时,删除变量周围的所有引号和花括号。

执行此操作时,请注意路径遍历攻击

于 2012-09-02T08:27:39.073 回答