2010-10-16 56 views
2

我想在Django中添加一個上下文變量,以便我可以在每個應用程序的基礎上定義它的值,或者將其保留爲空。在Django的每個應用程序的基礎上自動添加一個變量到上下文中?

實施例:

應用/ someapp/views.py:

def_context_var('app_name', 'Calendar') 

模板/ base.html文件:

{% if app_name %}You are in {{ app_name }} app.{% endif %} 
.... 
{% if app_name %}Subsections of {{ app_name }}: ...{% endif %} 

我考慮的以下:

  1. 申報應用程序中的變量(在視圖中或URL中)以及make上下文處理器。但我無法理解如何提取給定請求對象的var。
  2. 把裝修視圖。嗯,我不喜歡這個想法:太多的樣板或重複的代碼。
  3. #1但更好:在服務器重啓時執行方法(如上例),將數據寫入字典,然後以某種方式將上下文處理器(如何)獲取應用程序名稱,並從字典。我在哪裏放置方法,字典,上下文處理器如何知道視圖對象在哪裏?

回答

2

您可以在上下文處理器中調用resolve(request.path)來解析當前url。請參閱django documentation on resolve for its return values,特別是app_name

+0

哇。我認爲它只是返回一個函數的元組,args&kwargs。盲點...謝謝! – 2010-10-16 20:13:51

+0

啊,那是1.3。嗯...好吧,我不得不使用inspect.stack。 – 2010-10-16 21:10:42

相關問題