2014-06-12 18 views
0

當通過管理員更新信息時,我遇到問題。DJANGO:由上下文管理器傳遞給模板的變量未反映管理員更改

變量所屬類別和shop_list正在我的base.html文件模板稱爲填補了現場

在主頁上,其中的變量被送入扔views.py的變化反映的每一頁上的某些菜單立即。

但是在其他頁面上,通過context_manage.py將變量提供給變量,直到我重置apache,或者經過一段不確定的時間段之後,纔會反映這些更改......絕對不是在合理的時間內。

爲什麼上下文管理器不能正常工作?我怎樣才能確保在管理員輸入時所有頁面的列表都更新,而不必將它們單獨傳遞給每個視圖?爲index.html的

觀點:

general = get_object_or_404(General, pk=1) 
product_list = Product.objects.all() 
shop_list = general.shop_set.all(); 

裏面有什麼context_manage.py:

general = General.objects.get(pk=1) 
product_list = Product.objects.all() 
shop_list = general.shop_set.all(); 


def passProList(request): 
    return { 
     'product_list': product_list, 
     'shop_list': shop_list, 
    } 

回答

1

直接將這些變量的定義成自己的方法或成passProList。目前,他們正在編譯python文件時進行評估。您需要在模板中訪問它們時對它們進行評估。

def get_pro_lists(pk): 
    general = General.objects.get(pk=pk) 
    product_list = Product.objects.all() 
    shop_list = general.shop_set.all() 
    return product_list, shop_list 


def passProList(request): 
    product_list, shop_list = get_pro_lists(1) 
    return { 
     'product_list': product_list, 
     'shop_list': shop_list, 
    } 
+0

所以,讓我弄清楚這一點。在我的程序中,每次填充視圖以獲取上下文時,都會調用passProList,但是當腳本首次編譯時,它所包含的變量只能設置一次,因爲數據庫調用超出'passProList'範圍,此時只運行一次......即,當我重置apache。所以通過調用訪問數據庫的passProList中的函數,每次調用passProList時都會訪問數據庫? – AllTheTime

+0

完美無瑕地工作,感謝您的幫助! – AllTheTime