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

Posted

技术标签:

【中文标题】Django:动态构造% include %标签的值?【英文标题】:Django: construct value of % include % tag dynamically?Django:动态构造% include %标签的值? 【发布时间】:2011-06-07 21:44:15 【问题描述】:

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

在 Django 中有没有办法做到这一点?

这是一个伪代码示例:

% include page_mode.html %

谢谢!

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

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

总结:

您可以结合 django 的内置 'with' template tag 将动态构造的模板名称分配给变量和 'add' filter 并动态构造模板名称。

例如:

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

【讨论】:

【参考方案3】:

来自文档:

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

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

% include modeTemplate %

假设 'mode' 在您的视图代码中是一个 Python 变量。

【讨论】:

以上是关于Django:动态构造% include %标签的值?的主要内容,如果未能解决你的问题,请参考以下文章

Django % include % 标签显示硬编码字符串但不可变

Django模板中include的标签的使用

如何正确使用 % include % 标签在 django 中呈现模板(如部分)?

django模板之继承标签extend和添加标签include

如何为 django 模板中的标签创建动态 id

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