我正在构建一个Django网站,我的边栏可以为不同的用户提供不同的元素。因此,我的主侧边栏模板为每个插件都包含一个div,每个插件的特定HTML都包含在他们自己的模板文件中。
示例:
<div id="plugins">
<div id="plugin1">
{% include 'plugin1.html' %}
</div>
<div id="plugin2">
{% include 'plugin2.html' %}
</div>
</div>
现在我想动态构建这个列表我该怎么办?因为模板只被解析一次所以我无法在上下文中发送'{%include'plugin1.html'}'字符串
有什么想法吗?
答案 0 :(得分:15)
您可以在include
代码中使用变量:
{% include my_user_html %}
答案 1 :(得分:0)
您可以在视图中生成包含模板的变量,也可以使用模板标记根据另一个变量(即阶段)为您生成模板路径。注册以下标签,根据您的需要进行定制:
@register.filter
def get_template_phase(template_string, phase):
template_string = template_string.replace('<', '{').replace('>', '}')
return template_string.format(phase=phase)
将上述内容放入模板标签并注册。
用法:
{% include 'includes/home__<phase>.html'|get_template_phase:'nomination' %}