如果你組織你的項目爲base.html
模板由其他模板,如延長appname/pagename.html
,您可以使用以模板爲中心的方法來突出顯示活動導航元素。
這種方法爲您提供了一些解耦優勢,我在回答結束時已經詳細記錄了這些優點。
我發現這種方法對處理大部分或全部網站中保持不變的廣泛導航項目非常有用。對於更詳細的導航元素,這可能不是一個合適的解決方案,例如呈現從您的數據存儲中收集的動態項目列表。
在你base.html
模板,塊添加到每個導航元素,給人獨特的名字塊:
<ul class="nav">
<li class="{% block navbar_class-home %}{% endblock %}">
<a href="#">Home</a>
</li>
<li class="{% block navbar_class-about %}{% endblock %}">
<a href="#">About</a>
</li>
<li class="{% block navbar_class-pricing %}{% endblock %}">
<a href="#">Pricing</a>
</li>
</ul>
在你appname/pagename.html
模板,如果你想要的導航元素之一出現活躍,覆蓋作爲內容使用active
適當的塊。例如,要突出「關於」項:
{% block navbar_class-about %} active {% endblock %}
當您使用將呈現模板視圖,它會呈現這樣的:
<ul class="nav">
<li class="">
<a href="#">Home</a>
</li>
<li class=" active ">
<a href="#">About</a>
</li>
<li class="">
<a href="#">Pricing</a>
</li>
</ul>
這提供了沒有按」初始渲染不依賴於JavaScript。 (您可以使用JavaScript,如果你正在做一個單頁的應用程序修改導航欄班到位。)
對於許多(但不是全部)的情況下,這可以從視圖邏輯較好的分離演示:
您可以修改視圖以將站點導航數據附加到模板上下文,但這樣會強烈地將演示文稿耦合到視圖層,並且使創建可重用應用程序或集成第三方應用程序變得更加困難。
該視圖已經選擇了一個已命名的模板,這意味着您已經將一些與導航相關的信息傳遞給模板層。這可能是你需要的一切。
您可以使用模板上下文處理器來獲取有關視圖的一些信息,但這只是將強耦合移動到系統的另一層,而不是留在模板層中。
啊,這更多的是我正在尋找的方式。抱歉,模棱兩可。剛剛從引導源複製,以供參考。我會給這一槍! – 2012-08-16 17:40:13