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

Posted

技术标签:

【中文标题】如何使用“include”标签在 Django 中动态包含模板【英文标题】:How to include templates dynamically in Django using "include" tag 【发布时间】:2012-09-22 02:16:49 【问题描述】:

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

例如

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

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

【问题讨论】:

【参考方案1】:

您可以使用 add filter 和 with 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 标签,并与模板目录的路径连接。

【讨论】:

以上是关于如何使用“include”标签在 Django 中动态包含模板的主要内容,如果未能解决你的问题,请参考以下文章

django 的模板标签“include”如何与 None 一起使用

如何从 python 代码中调用 django 模板标签?

Django模板中include的标签的使用

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

Django模版语言的复用 1. include标签--模版导入 2.inclusion_tag自定义标签--模版导入 3.母版

Django4.3_templates模板之继承标签extends和include添加标签