我正在寻找一种方法来设置一些站点范围(或应用程序范围)的变量,例如我将在我的模板中使用的网站(或应用程序)标题(在我的标题中)例如)。我有像WordPress'记住bloginfo()。
理想情况下,我希望能够在网站或应用级别定义任何类型的属性。例如,对于给定的应用,我有:
应用
- attribute1(例如标题)
- attribute2(例如联系电子邮件)
- 型号1
---- AttributeX
---- AttributeY
----...
意思是" attribute1"将是我的应用程序独有的。然后我需要一种方法来在我的模板中使用attribute1的值。 我希望我的问题很明确。
答案 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
,然后将此文件的路径添加到设置中的上下文处理器列表