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中的块,而不管处理请求的实际视图的输出是什么?”
答案 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
});