【发布时间】:2018-11-29 11:14:34
【问题描述】:
我正在使用一个名为“base.html”的父模板,该模板位于 myproject/myproject/templates 目录中。我渲染了子模板,一切都很顺利,除了我写 {% extends %} 来显示父模板。 Django 的行为非常奇怪。找了好久才发现,即使在注释里面写了与父模板相关的extends,block,endblock这些东西,Django还是会忽略子模板中的内容,显示为空屏幕。如果我故意在模板的内容中出现语法错误,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”(它不会出现在 Inspect 屏幕中出现的 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>
提前感谢您的帮助。
【问题讨论】:
-
您的
{% static %}和其余部分没有包裹在{% block... %}中。所以它被忽略了,因为根据父母的说法,它没有必要。 -
没错。非常感谢。
标签: django templates inheritance