Django:动态构造{%include%}标签的值?

时间:2011-01-12 15:11:28

标签: django

我想在我的Django模板中使用{% include page.html %}标记,并动态构造page.html的值。

有没有办法在Django中这样做?

这是一个伪代码示例:

{% include page_{{mode}}.html %}

谢谢!

3 个答案:

答案 0 :(得分:21)

来自文档:

  

模板名称可以是a   变量或硬编码(引用)   字符串,单个或​​双   引号。

因此,在视图中构造一个变量,并通过上下文将其传递给模板,比如'modeTemplate':“page _”+ mode +“。html”。然后做:

{% include modeTemplate %}

假设'mode'是视图代码中的python变量。

答案 1 :(得分:7)

我认为goliney提供了更好的答案here

总结:

您可以组合django的内置'with' template tag,为动态和'add' filter分配动态构造的模板名称,并动态构建模板名称。

例如:

 {% with template_name='page_'|add:mode|add:".html" %}
     {% include ""|add:template_name %}
 {% endwith %}

答案 2 :(得分:3)

您可以使用with代码和add过滤器在模板中连接纯字符串和变量, 见this SO answer