如何使用“include”标记在Django中动态包含模板

时间:2012-10-01 08:26:16

标签: django django-templates

我有10个html文件,名称为1.html,2.html ..etc 我想要的是根据一个变量,某个文件应该包含在模板中。

e.g。

{% if foo.paid %}
    {% include "foo/customization/{{ foo.id }}.html" %}
{% endif %}

这可能吗?导致在包含标记工作之前未翻译foo.id。结果它给出了一个错误。如何以不同的方式处理这个问题? 我应该为此创建自定义模板标记吗?

1 个答案:

答案 0 :(得分:31)

您可以使用add filterwith statement来完成此操作。

{% if foo.paid %}
    {% with template_name=foo.id|stringformat:"s"|add:".html" %}
        {% include "foo/customization/"|add:template_name %}
    {% endwith %}
{% endif %}

首先,您构建一个template_name,其中包含foo.id字符串格式与.html连接在一起。然后将其传递给include标记,与模板目录的路径连接。