Python 使用include动态指向HTML

Python 使用include动态指向HTML,python,html,jinja2,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 如果我在inc

我想根据变量指向不同的HTML文件。我正在使用以下格式的include:

{% include 'templates/case/{{cid}}/intro.html' %}
这会引发一个错误:

TemplateNotFound: templates/case/{{cid}}/intro.html
看看这个,我知道Jinja2不会在运行时解析变量。
cid=ABC
(ABC是路径中文件夹的名称)的值,因此我希望总路径为:

templates/case/ABC/intro.html
如果我在include中直接使用这个解析路径,它就会工作


如何解决此问题?

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


在这样做的时候,要小心

在另一个堆栈溢出问题中找到了答案:


下面是如何通过include直接传递代码

{% include "templates/case/"+cid+"/intro.html" %}

至少在Jinja2.7.1中,本工程:

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

托马斯,谢谢你的回复。如果您的意思是我在一个变量中传递完整路径:vid='templates/case/{{cid}}/intro.html',然后在inclide中使用它。。。。{%包括{{vid}}%}。我试过了。。。这会产生同样的错误。。。TemplateNotFound.@Utpal您是否尝试删除“{}}”并仅使用{%include vid%}?虽然我可能已经离开了,但我已经有一段时间没有使用Jinja了,但我希望它在这方面的工作与django类似。你可能想看看这个类似的问题:非常感谢托马斯。删除“{}}”非常有效。但是,我会检查您警告过我的“路径遍历攻击”。
{% include 'templates/case/%s/intro.html' % cid %}