Django模板包含

时间:2010-09-10 20:44:45

标签: django django-templates

django网站上的模板继承页面并没有真正解决我的问题(Django 1.2)。

我的基页看起来像是:

...
<div class="grid_12" id="content">
   {% block content %}{% endblock %}
</div>
...
{% block javascript %}{% endblock %}

我有另一个模板来定义这些内容:

{% block content %}
   animated sidebar
{% endblock %}
...
{% block javascript %}
   alert('hello');
{% endblock %}

这类似于动画侧边栏,所以我不想扩展基本模板,因为它是页面主要内容的辅助。如果我只使用“include”,那么整个事情就放在“include”标签的位置 - 因此javascript不会运行,因为它包含在其中一个依赖项之前。

解决这个问题的最佳方法是什么?

修改

对不起,我没有说清楚。

我的内容页面会呈现扩展“base.html”的模板。在“base.html”中,我想要包含一个需要在“base.html”中附加块的侧边栏模板。所以我尝试将include "sidebar.html"放入“base.html”,但它只是将整个内容插入“include”标记。我想要它做的是将块附加在“base.html”中,这些块本身可以填充“page.html”。

也许重要的是要说“sidebar.html”完全是静态的 - 即没有与之相关的可调用内容。所以也许这个问题应该是“如何在base.html中包含一个静态模板,以便它会附加到base.html中的块,而不管处理请求的实际视图的输出是什么?”

3 个答案:

答案 0 :(得分:1)

我认为你的意思是你想要追加一块?您可以将{{ block.super }}放在您希望继承内容的位置。 e.g:

{% block javascript %}
    {{ block.super }}
    alert('hello');
{% endblock %}

答案 1 :(得分:0)

您应该 使用{% block foo %}标记来扩展基本模板中的块,所以当您说不想要扩展它。

您输入的代码应该呈现为

...
<div class="grid_12" id="content">
   animated sidebar
</div>
...
alert(hello)

除非您想附加内容(如Matt的答案),否则您不清楚自己想要发生什么。

答案 2 :(得分:0)

您应该使用类似jQuery之类的东西,仅在页面完全加载后触发执行。在文档标题中包含jQuery库,然后在某处:

$(document).ready(function() {
   //your code goes here
});