Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django:如何在站点范围内包含块?_Django_Templates_Block - Fatal编程技术网

Django:如何在站点范围内包含块?

Django:如何在站点范围内包含块?,django,templates,block,Django,Templates,Block,抱歉,这很基本。我已经将静态html导航栏抽象为一个块,以便可以从模型中动态呈现它。我用以下语法在base.html中创建了一个新的块标记 {% block navigation %}{% endblock %} 如何确保在每个页面上都呈现此内容?我需要为此创建某种中间层吗?到目前为止,我所做的一切都只是使用了主块 编辑2011年8月14日星期日上午11:25 我解释得不太清楚。导航块的内容是 {% extends 'base.html' %} {% block navigation %}

抱歉,这很基本。我已经将静态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 %}
{%extends'base.html%}
{%block-navigation%}
    {items%%中的项的%s}
  • {%endfor%}
{%endblock%}

如果可能的话,我想在每个页面上呈现这个,而不必逐个检查base.html的子模板并将其添加到其中

您的块在这里没有做任何事情,但是如果您想在所有模板中显示某些内容,则必须在基本模板(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 %}

{%block FOO%}{%endblock%}在子模板中保留要覆盖的空间

{%include“foo.html”%}将内容从另一个文件拉入当前文件

要在每个页面上显示{%block navigation%}{%endblock%},您需要添加内容

{% block navigation %}SHOW ME{% endblock %}

您已经有了静态导航栏,所以您可以在base.html页面中编写代码,然后在每个新页面上与
{%extends'base.html%}
标记一起使用。您的标记将出现在每个页面中。另外,如果您在子页面中只使用extends标记,然后对其进行渲染,您将看到base.html而不使用任何版本

如果您有需要出现在少数页面上但不是每个页面上的代码-创建“includes”目录,将代码保存在那里,并使用
{%include%}
标记扩展基本模板。它不会避免重新绘制,但会缩短代码


最后一件事是你将来需要的,也许是动态代码缓存。使用
{%cache%}
标记,您可以将块缓存一段时间。

您的块在这里没有做任何事情。你到底想达到什么目的?