2
我正在建立一個網站,其中包含一個獨特的主頁設計(主頁有一個不同於所有其他頁面的標題和徽標安排)。不過,我希望有一個基礎模板,它可以減少冗餘。在Django中具有獨特主頁佈局的網站模板
-base.html
-basehome.html (inherits from base.html)
-basesecond.html (inherits from base.html)
-about.html (inherits from basesecond.html)
-etc...
所以base.html包含html聲明和結構。 Basehome.html和basesecond.html包含不同的標題結構和網站上從Basesecond.html繼承的各種其他頁面。
所以我不斷遇到的問題是,它似乎需要把塊放在一個塊內,以處理顯然包含(最遠的)子模板的主體內容。據我所知,Django不會讓你這樣做。
base.html--
<html>
<head>
<title>Mysite</title>
</head>
<body id="{% block bodyholder %}{% endblock %}">
<div id="hd">{# start of hd #}
{% block hd %}{% endblock %}
</div>{# end of the hd #}
<div id="bd">{# start of body #}
{% block bd %}{% endblock %}
</div>{# end of body #}
</body>
</html>
basehome.html--
{% extends "base.html" %}
{% block bodyholder %}bodyhome{% endblock %}
{% block hd %}
big logo and wide header
{% endblock %}
{% block bd %}
homepage body content
this part works just like I want it to.
{% endblock %}
basesecond.html--
{% extends "base.html" %}
{% block bodyholder %}bodysecond{% endblock %}
{% block hd %}
small logo and narrow header
{% endblock %}
{% block bd %}
second page body content
here is where I want to put extra blocks like
{% block unique about page sidebar %}{% endblock %}
but it breaks the template system
{% endblock %}
什麼是解決這個問題的最好方法是什麼?
什麼問題?這與您所描述的完全相同。 – 2011-05-03 23:04:07
事實上,在Django模板中沒有像這樣嵌套塊的問題。你有錯誤嗎? – 2011-05-04 01:11:00
用Django模板記住的一件事是,子模板中包含的塊可以*重寫*或*擴展*父模板中的塊。有時候,我已經在子模板中放置了塊,這些子模板是空的,以覆蓋父塊,從而不必在每個子模板上添加代碼。模板系統非常靈活。我認爲你可以把你的側邊欄塊放在父模板中,只填充到你的「關於」頁面上,沒有任何問題。 – Brandon 2011-05-04 03:33:41