假设我有下面显示的三个html模板文件。 HTML只是为了说明这一点。Django多级模板扩展和嵌套块
是否有可能以某种方式将名为extra_head_content的块嵌入已命名为extra_head_content的块内。这个想法是让第三层模板提供一个名为extra_head_content的块。它上面的模板获取该内容,将其添加到名为extra_head_content的块中,并将此组合块提供给其父模板。
本质上,我正在寻找跨越继承的模板文件的块嵌套。
我试图解决的确切场景是任何模板都应该能够向head元素添加额外的javascript或css文件。然而,最低的模板不应该关心它嵌套的层数。同样,由中间模板提供的额外头部内容不应被终端模板的块元素覆盖。
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 %}
django-sekizai是非常有用的......我找不到任何参考它现在与Django一起发货了吗? AFAICT它仍然是第三方模块 – Anentropic 2015-05-24 10:46:07
感谢您选择了!它似乎包含在Django CMS 2.2及更高版本中,但目前还没有包含Django本身,所以我已经更正了我的答案。 – 2015-05-25 12:07:31