2012-08-29 25 views
0

我有一個django項目,有很多應用程序。現在,我只需要爲某些應用程序添加一些變量到上下文字典中.DJANGO是否提供了實現此目的的任何選項? 我知道裝飾器可以是有用的。是否有其他方式,如中間件/上下文處理器自動運行,但僅限於特定應用程序。如何將變量傳遞給某些應用程序的模板

+0

假設每個Django應用程序都有自己的視圖,答案是「是」。只需在每個視圖的基礎上改變上下文,或者在應用程序內使用子類上下文類。但我傾向於認爲你應該重新考慮你的方法,以及這是否真的有必要。 – Tadeck

+0

變量的值是否取決於視圖?否則,你確實可以編寫一個上下文處理器,只爲某些請求添加值。 –

+0

沒有值不依賴於視圖... –

回答

1

像這樣的背景處理器可以做你需要的東西:

from django.core.urlresolvers import resolve 

def app_var(request): 
    if resolve(request.path).app_name == 'YOUR_APP_NAME': 
     return {'CUSTOM_VAR': 'VALUE'} 
    return {} 

安裝背景處理器,將代碼放在你喜歡的任何文件,並添加一個條目引用(如'folder.file.app_var')它在CONTEXT_PROCESSORS在你的settings.py

+0

但是上下文處理器的範圍遍及整個項目...我想要的應用程序 –

+0

如果在第一行是將其範圍限制爲某個應用程序,只需將您的應用程序名稱而不是「YOUR_APP_NAME」。 –

+0

變通辦法始終存在。這個問題的主要原因是確定是否在django本身的功能。 –

相關問題