道歉,这是非常基本的。我已经将静态html导航栏抽象为一个块,以便可以从模型中动态呈现它。我在base.html中使用以下语法
创建了一个新的块标记{% block navigation %}{% endblock %}
如何确保在每个页面上呈现此内容?我需要为此创建某种中间层吗?到目前为止,我所做的一切都只使用了主要块。
编辑 2011年8月14日星期日上午11:25
我没有很好地解释这一点。导航块的内容是
{% extends 'base.html' %}
{% block navigation %}
<nav>
<ul>
{% for item in items %}
<li><a href="{{ item.url }}">{{ item.name }}</a></li>
{% endfor %}
</ul>
</nav>
{% endblock %}
我希望在每个页面上呈现此内容,而无需单独浏览base.html的子模板并将其添加到它们中,如果可能的话。
答案 0 :(得分:2)
您有静态导航栏,因此您只需在base.html页面中编写代码,然后在每个新页面上使用{% extends 'base.html' %}
标记。您的标记将在每个页面中。此外,如果您只在子页面中使用extends标记然后呈现它 - 您将看到base.html没有任何版本。
如果您有代码需要出现在几个页面上,而不是每个人都有 - 请创建“包含”目录,在那里保存代码并使用{% include %}
标记扩展您的基本模板。它不会避免重复,但会缩短你的代码。
最后你需要的东西,可能是动态代码 - 缓存。使用{% cache %}
标记,您可以缓存一段时间。
答案 1 :(得分:0)
您的块在此处没有执行任何操作,但如果您希望在所有模板中显示某些内容,则必须在基本模板(base.html)中对其进行定义,并使其他模板从中扩展:
base.html文件
Yor menu and the stuff you want to appear everywhere
{% block content %}{% endblock %}
另一个模板
{% extends "base.html" %}
{% block content %}
The actual content of the page
{% endblock %}
答案 2 :(得分:0)
{%block FOO%} {%endblock%}保留在子模板中覆盖的空间。
{%include“foo.html”%}将其他文件中的内容提取到当前文件中。
要在每个页面上显示{%block navigation%} {%endblock%},您需要添加内容
{% block navigation %}SHOW ME{% endblock %}