假設我有下面顯示的三個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