【发布时间】:2018-10-30 21:16:08
【问题描述】:
上下文处理器不适用于 Django(2.0.5 版)中的 Jinja2(2.10 版)。这就是我所做的。如下创建了上下文处理器:
def test_con_proc(request):
return {
'test_con_proc': "Testing Context Processors",
}
并且,使用这个在我的模板中调用它:
{{ test_con_proc }}
另外,将其添加到 settings.py 文件中,如下所示:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.jinja2.Jinja2',
'DIRS': [....)
],
'APP_DIRS': True,
'OPTIONS': {
'environment': '....jinja2.environment',
},
},
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [.....],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'dashboard.context_processors.test_con_proc',
],
},
},
]
那么,在 Django 中使用带有 Jinja2 的上下文处理器解决问题的正确解决方案是什么?
【问题讨论】:
-
首先,显示完整的模板设置。其次,上下文处理器当然不能在 jinja2 模板中工作,它们是 Django 模板的东西。为什么需要使用 jinja2?
-
@DanielRoseman 我在使用 Django 模板时遇到了这个范围问题。这就是我使用 Jinja2 的原因,在搜索论坛时,我发现 Jinja2 的性能优于 Django 模板。请不要对我投反对票。我是新手,我对 django 了解不多。互联网只是我的资源。
-
@DanielRoseman 你有什么建议吗?我无法回到 Django 模板,我必须使用 Jinja2 并且应该可以完成这项工作。您对在 Django 模板上使用 Jinja2 有何看法。请回复我。