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

28
我有10个HTML文件,它们的名称分别为1.html、2.html等等。 我的需求是根据一个变量,在模板中包含特定的文件。
例如:
{% if foo.paid %}
    {% include "foo/customization/{{ foo.id }}.html" %}
{% endif %}

这是否可能?因为foo.id在包含标签之前没有被翻译,导致出现错误。有什么其他解决方法吗?我应该为此创建自定义模板标签吗?

1个回答

55
你可以使用 add过滤器with语句 来实现。
{% 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标签。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接