2013-11-14 61 views
1

我想要做一些非常愚蠢的事情:在Django模板中顯示一些設置變量(使用Django 1.5)。所以,如果我試試這個:爲什麼我不能將用戶定義的設置作爲變量包含在Django模板中?

<p>Timezone: {{ TIME_ZONE }}</p> 

我得到我的設置文件中定義的時區。到現在爲止還挺好。

但現在,讓我們說,我定義這個新的設置:

FOO = 'bar' 

並嘗試:

<p>Foo: {{ FOO }}</p> 

我不能看到變量的值。爲什麼?

我知道我可以將變量傳遞給視圖中的模板,但是如果我想在一個地方爲我的項目定義一個名稱和描述並將它們顯示在任何模板中,該怎麼辦?這是我想要做的簡單任務之一。

這種問題表明我沒有正確地做事(意思是「Django如何認爲應該這樣做」),但我不知道爲什麼。

回答

4

由於您的設置中啓用了django.core.context_processors.tz環境處理器,因此您的模板中有一個TIME_ZONE變量。
參考:https://docs.djangoproject.com/en/dev/topics/i18n/timezones/#get-current-timezone

對於其他設置,您需要編寫自己的上下文處理器或從視圖發送設置值。
您可以導入您的項目設置:from django.conf import settings
文檔建議使用它來代替本地設置文件。

你可以在這裏找到細節:https://docs.djangoproject.com/en/dev/topics/settings/#using-settings-in-python-code

+0

謝謝您的回答。解決了這個問題。但是我有一個疑問:編寫一個上下文處理器是提供用戶定義的全局變量在任何模板中顯示的最簡單的方法?除了每次我想要顯示它時都將該變量傳遞給模板(這聽起來不像'優雅') – jorgeas80

+0

嗯,它不能簡單。如果你還沒有,請在這裏查看 - https ://docs.djangoproject.com/en/dev/ref/templates/api/#writing-your-own-context-processors –

+0

好的。聽起來很簡單,真的。非常感謝! – jorgeas80

相關問題