2012-03-22 77 views
2

我是Django和Web編程的新手。已使用Google搜索,但無法找到我需要的答案。這裏的情況:Queryset在繼承的Django模板中

我有一個網站,其中用戶登錄每個頁面都有一定的導航菜單。這就是爲什麼他們擴展名爲base_logged.html的模板,這也擴展了base.html。 問題在於導航菜單部分由數據庫查詢填充。

有沒有在每個記錄視圖中填充查詢的方法? 還是有點看繼承?

對不起,我英文很差。

回答

3

另一種選擇是創建自定義模板標籤(可能爲inclusion tag)並將其放入您的基本模板中。

因此,在您的基本模板,你可以有這樣的事情:

{% navigation_bar user %} 
0

您可以使用context processorsHere's a good example)。這些允許您在整個站點的每個視圖中提供變量(查詢集等)。例如,使文件在您的應用程序之一:

some_app.context_processors.my_context_processor.py

from some_app.models import Bar 
def my_context_processor(): 
    return { 
     'foo' : Bar.objects.all(), 
    } 

,並在您settings.py

TEMPLATE_CONTEXT_PROCESSORS = (
    ... 
    'some_app.context_processors.my_context_processor', 
    ... 
) 

,你現在有權訪問所有視圖/模板:

{{ foo }} 
+0

這聽起來不錯。我會嘗試一下,然後張貼我的經驗。沒關係,不是每個網頁都會對查詢有意義嗎?因爲查詢基於用戶... – lembon 2012-03-23 00:10:24

+0

'... def my_context_processor(request): ...' – 2013-09-30 18:02:52