【发布时间】:2012-02-01 19:16:05
【问题描述】:
假设我有如下所示的三个 html 模板文件。 HTML 是最小的,只是为了说明这一点。
是否可以以某种方式将名为 extra_head_content 的块嵌套在已命名为 extra_head_content 的块中。这个想法是允许第三级模板提供一个名为 extra_head_content 的块。它上面的模板获取该内容,将其添加到名为 extra_head_content 的块中,并将此组合块提供给其父模板。
本质上,我正在寻找跨继承模板文件的块嵌套。
我要解决的确切情况是任何模板都应该能够将额外的 javascript 或 css 文件添加到 head 元素。但是,最低的模板不应该关心它嵌套了多少层。同样,中间模板提供的额外头部内容不应被终端模板的块元素覆盖。
base.html
<html>
<head>
<link rel="stylesheet" type="text/css" href="/static/css/reset.css" />
{% block extra_head_content %}{% endblock %}
</head>
<body>{% block content %}{% endblock %}
</html>
account.html
{% extends "base.html" %}
{% block extra_head_content %}
<link rel="stylesheet" type="text/css" href="/static/css/account.css" />
{% block extra_head_content %}{% endblock %}
{% endblock %}
{% block content %}
<div id="menu">...</div>
{% block account_content %}{% endblock %}
{% endblock %}
account_profile.html
{% extends "account.html" %}
{% block extra_head_content %}
<link rel="stylesheet" type="text/css" href="/static/css/edit_profile.css" />
{% endblock %}
{% block account_content %}
Welcome to your profile
{% endblock %}
【问题讨论】: