动态模板“包含”与django

时间:2011-02-21 04:55:11

标签: python django

我正在构建一个Django网站,我的边栏可以为不同的用户提供不同的元素。因此,我的主侧边栏模板为每个插件都包含一个div,每个插件的特定HTML都包含在他们自己的模板文件中。

示例:

  <div id="plugins">
    <div id="plugin1">
      {% include 'plugin1.html' %}
    </div>
    <div id="plugin2">
      {% include 'plugin2.html' %}  
    </div>
  </div>

现在我想动态构建这个列表我该怎么办?因为模板只被解析一次所以我无法在上下文中发送'{%include'plugin1.html'}'字符串

有什么想法吗?

2 个答案:

答案 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' %}