正如已接受的答案所说,使用上下文处理器。以下是如何让它们与当前的 Django 版本一起工作:
首先,创建一个接受请求并返回包含全局模板变量的字典的函数:
def load_nav_obj(request):
nav_obj = NavigationObject.objects.all()
return {'nav_obj': nav_obj}
这个函数的一个好地方是在你的主应用程序的文件context_processors.py中。
现在,告诉您的应用将此上下文处理器用于所有呈现的模板。在您的settings.py 中,在TEMPLATE 设置中添加myapp.context_processors.load_nav_obj:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
# Insert your context processors here
'django.contrib.auth.context_processors.auth',
'django.template.context_processors.debug',
'django.template.context_processors.i18n',
'django.template.context_processors.media',
'django.template.context_processors.static',
'django.template.context_processors.tz',
...
'myapp.context_processors.load_nav_obj',
],
},
},
]
就是这样!您现在可以在所有模板中使用变量{{nav_obj}}!