我想爲我的web應用創建一個側欄。它包含以下內容:與django,佈局或視圖的邊欄?
- 搜索欄
- 的標籤列表
- 聯繫最近的帖子(含年份和月份)
我想包括這個側邊欄在每個站點/視圖。所以我的第一個猜測是它屬於一個佈局。 但它也是動態的,據我所知佈局是靜態的。
如何避免我的視圖/佈局冗餘,並仍然在每個網站上都有側邊欄?
我想爲我的web應用創建一個側欄。它包含以下內容:與django,佈局或視圖的邊欄?
我想包括這個側邊欄在每個站點/視圖。所以我的第一個猜測是它屬於一個佈局。 但它也是動態的,據我所知佈局是靜態的。
如何避免我的視圖/佈局冗餘,並仍然在每個網站上都有側邊欄?
要將上下文數據傳遞給多個模板,您在django中有不同的選項;你既可以:
做一個Template Tag可以拉的相關數據並使其在每次需要(或只是將其插入一個基礎模板,並使用template inheritance)模板重用。
使用context processor:它將與每個請求一起調用,並將數據添加到使用RequestContext
的每個視圖的上下文中。
使用Django的基於類的視圖,您可以讓所有視圖從將視圖添加到數據的基本視圖繼承。
如果你需要從你的數據庫中,我寧願用一個模板標籤比使用上下文處理器,因爲它會被調用每視圖去的數據。
對於側邊欄中的靜態內容(例如搜索表單),它的直接模板/ html。
對於像標籤列表這樣的動態內容,最近的帖子: 一旦進入模板,您已經確定了要放置此信息的元素(div或其他),您可以使用自定義模板標記填充其內容定製情境處理器。
就你而言,如果內容並不真的取決於請求參數或url,那麼模板標籤將是更好的選擇。
這當然是基於地方類視圖照耀功能同行。 – 2012-08-08 10:47:25
@JoshSmeaton:完全同意這一點,但在文檔和演示文稿中很少提及使用具有繼承的基於類的視圖將數據添加到多個視圖的上下文中的優勢! – 2012-08-08 11:02:14