使用include动态指向HTML

时间:2012-09-02 06:44:05

标签: python html jinja2

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

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

这会引发错误:

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

看着这个我知道Jinja2在运行时没有解析变量。 cid = ABC的值(ABC是路径中的文件夹名称),因此我预计总路径为:

templates/case/ABC/intro.html

如果我直接在包含它使用这个解决的路径它是有效的。

我该如何解决这个问题?

4 个答案:

答案 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