将块传递到包含的模板中而不进行扩展

时间:2012-02-17 14:07:28

标签: django django-templates

我想知道在整个项目中多次包含模板的最佳方法,并且可能在父模板中多次包含模板。这包括子模板只是一个必须用变量和html块填充的骨架。示例模板:

parent.html:

<p>Popup #1</p>
{% include "popup.html" %}
<p>Popup #2</p>
{% include "popup.html" %}

popup.html:

<h1 class="title">{% block title %}{% endblock %}</h1>
<div class="body">{% block body %}{% endblock %}</div>

我能想到的唯一解决方案是为每个弹出窗口分别创建一个文件,并在每个文件中扩展popup.html。然后,我可以将这些扩展文件包含在我的父文件中。这需要为每个弹出窗口添加一个令人沮丧的文件。 什么是实现这一目标的最佳方式?

1 个答案:

答案 0 :(得分:4)

Django模板引擎在这个领域陷入困境。无法在其中包含文件解析块。您可以将数据传递到包含,允许您执行以下操作:

<h1 class="title">{{ title }}</h1>
<div class="body">{{ body }}</div>

但是如果你需要实际的块,它们必须直接在主模板文件或其父模板之一。