如果我使用{%extended%},则Django会忽略子模板中的内容

时间:2018-06-20 10:37:13

标签: django templates inheritance

我正在使用一个名为“ base.html”的父模板,该模板位于目录myproject / myproject / templates中。我渲染了子模板,除了我写{%extended%}来显示父模板时,一切都进行得很好。 Django的行为非常奇怪。经过很长时间试图找出错误,我发现,即使我在注释中编写了与父模板相关的extends,block,endblock内容,Django仍然会忽略子模板中的内容,并显示一个空白屏幕。如果我故意在模板的内容中犯了语法错误,Django会抛出一个异常(因此它确实会读取内容),但是如果没有错误,浏览器只会从父模板中获取代码(我发现了使用检查)。 Django仅在子模板停止与父模板建立关系时才显示子模板中的内容(我什至无法在注释中添加代码的扩展,阻止等内容)

代码如下:

子模板:

{% extends "education/base.html" %}
{% block barraup %}
{{block.super}}
{%endblock%}

{% block barradown %}
{{block.super}}
{%endblock%}

{% load static %}
<link rel="stylesheet" type="text/css" href = "{% static 'principal/principal.css' %}" />


<div id="presentacion">
    ...content
</div>

如果没有错误,浏览器甚至不会读取最后一个div“ presentacion”(不会出现在“检查”屏幕的html中)。

父模板:

{% load static %}
<head>
    <link rel="stylesheet" type="text/css" href = "{% static 'education/base.css' %}">
</head>

<body>
        <div id="barraup">
        {% block barraup %}
        ...content
        {% endblock %}
        </div>

        <div id="barradown">
        {% block barradown %}
        ...content
        {% endblock %}
        </div>

</body>
</html>

预先感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

子模板中的所有内容都必须位于父模板中定义的块内-否则无处可放。

您可能应该在父级的两个div之间定义一个“内容”块,并将子级内容包装在其中。