为什么我不能在Django模板中包含用户定义的设置作为变量?

时间:2013-11-14 19:10:08

标签: django django-templates django-settings

我正在尝试做一些非常愚蠢的事情:在Django模板中显示一些设置变量(使用Django 1.5)。所以,如果我试试这个:

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

我在设置文件中定义了时区。到现在为止还挺好。

但是现在,我要定义这个新设置:

FOO = 'bar'

尝试:

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

我看不到变量的值。为什么呢?

我知道我可以从视图中将变量传递给模板,但是如果我想在一个地方为我的项目定义名称和描述并在任何模板中显示它会怎么样?这是我想做的简单任务之一。

这种问题告诉我,我没有正确地做事(意思是“Django认为应该怎么做”),但我不知道为什么。

1 个答案:

答案 0 :(得分:4)

您的模板中有一个TIME_ZONE变量,因为您的设置中启用了django.core.context_processors.tz上下文处理器。
参考: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