2016-01-20 50 views

回答

8

使用一個上下文處理器,它被精確地製成用於這一目的。在您的應用程序目錄中創建一個文件context_processors.py,然後在文件中定義返回變量的字典中每個模板的上下文插入函數,是這樣的:

def add_variable_to_context(request): 
    return { 
     'testme': 'Hello world!' 
    } 

啓用在設置你的背景處理器( Django的> = 1.8):

TEMPLATES = [ 
    { 
     'BACKEND': 'django.template.backends.django.DjangoTemplates', 
     'DIRS': [root('templates'),], 
     'APP_DIRS': True, 
     'OPTIONS': { 
      'context_processors': [ 
       'django.template.context_processors.debug', 
       'django.template.context_processors.request', 
       'django.contrib.auth.context_processors.auth', 
       'django.contrib.messages.context_processors.messages', 
       'yourapp.context_processors.add_variable_to_context', 
      ], 
     }, 
    }, 
] 

然後在每一個模板,你可以寫

{{ testme }}

它將呈現在Django documentation

+0

太好了。這足夠我的目的。非常感謝 –

+0

也可以使用自定義過濾器。 – shadow0359

+0

優秀smithers –

-1
from django.shortcuts import render_to_response 

env = {'name': 'Your Name'} 

return render_to_response('base.html', env) 

這將只發送給命名爲base.html文件

+0

不是我的downvote,但OP的問題的最後9個字 - 「而不必傳遞每個視圖的數據。」 – Sayse

+0

是的你是對的,我讀錯了。您的評論然後是我認爲最合適的方式 –

1

如果您需要在(幾乎)每個模板這個數據,那麼它是有道理的使用背景處理器的頁面。從Django文檔:

的context_processors選項是可調用的列表 - 稱爲上下文處理器 - 它們採取的請求對象作爲參數,返回項目的字典合併到上下文。

Django docs on Writing your own context processors

相關問題