Django - 设置和使用站点范围的变量以在模板

时间:2017-03-17 16:48:36

标签: django django-templates django-apps

我正在寻找一种方法来设置一些站点范围(或应用程序范围)的变量,例如我将在我的模板中使用的网站(或应用程序)标题(在我的标题中)例如)。我有像WordPress'记住bloginfo()

理想情况下,我希望能够在网站或应用级别定义任何类型的属性。例如,对于给定的应用,我有:

应用

- attribute1(例如标题)

- attribute2(例如联系电子邮件)

- 型号1

---- AttributeX

---- AttributeY

----...

意思是" attribute1"将是我的应用程序独有的。然后我需要一种方法来在我的模板中使用attribute1的值。 我希望我的问题很明确。

2 个答案:

答案 0 :(得分:2)

我使用context processors始终使用网站范围(或应用范围)变量。

在你的应用程序中创建一个名为context_processors.py的单独文件(不用说,这不是强制命名的,只是为了约定),这个文件必须至少定义一个接受{的函数{1}}参数并返回字典。

类似的东西:

request

现在,在您将模板中的变量作为# yourapp/context_processors.py def static_vars(request): return = { 'var1': 'Hello', 'var2': 'World', } 访问之前,您必须将此功能传递给path设置,如下所示:

{{ var1 }}

现在,您可以在每个模板中使用变量# settings.py TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [ # dirs here ], 'OPTIONS': { 'context_processors': [ # some other context processors here and ... 'yourapp.context_processors.static_vars', ], 'loaders': [ # loaders here ], }, }, 公开。

答案 1 :(得分:1)

如果您希望在模板中使用这些变量,那么您应该查看context processors。最简单的解决方案是在您的应用或项目中添加context_processors.py,然后将此文件的路径添加到设置中的上下文处理器列表