2015-12-05 59 views
1

我有一個第三方應用程序(我們稱之爲應用程序A),在其views.py中,它使用上下文處理器將數據發送到特定的URL。它發送的數據在其模板中用於確定導航欄的樣子。例如,如果數據庫中存在A.project條目,它將在其模板中顯示<i> Projects </i>在Django中使用模板標籤檢索數據是不好的做法嗎?

現在我想擴展該應用程序,並使用它使用的導航欄,但是在博客應用程序是第三方應用程序的位置添加一個額外的參數blog。現在的問題是,無論你何時轉到與博客應用關聯的網址,例如(/blog),從導航欄的應用不限項目將丟失,因爲從博客應用程序發送的情況下是不同的,從應用A.

我也許可以創建自定義的模板標籤來檢查是否A.project丟失的數據,等等,但我不確定這是否是最好的方法。

有沒有更好的方法呢?

+1

你需要小心的是混合邏輯到這是你會在做的危險是什麼看法的事情。但我恐怕現在想不到一個簡單的解決方案 – Sayse

回答

1

如果你正在尋找的是有一些提示天氣的一些數據或者在模板渲染時存在的一些應用程序,你可以使用一個模板,背景處理器,因爲這是他們的 - 裝東西到每一個模板。

我肯定不會推薦實施的模板標籤來獲取數據,這將打破MVC規則一次,但隨後試圖調試緩慢的數據庫查詢,並像其他的東西,你可能會遇到麻煩。

如果你正在上下文處理器中做一些數據庫查詢,請記住,即使它不需要該數據,每次都會執行模板。

刮鬍子該處理的一段時間,你可以使用某種手動緩存與適當的失效方式。

如果您使用基於類的視圖,另一種途徑是實現一個mixin,它只會將需要的數據添加到上下文中(在get_context_data方法中)。如果您正在執行此操作,請確保致電super以獲取您通常擴展的類基本視圖的上下文。

相關問題