上下文处理器不适用于 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 的上下文处理器的正确解决方案是什么?
最佳答案
您需要安装django-jinja那么:
更改:'BACKEND':'django.template.backends.jinja2.Jinja2',
到“BACKEND”:“django_jinja.backend.Jinja2”,
之后将上下文处理器移至 jinja OPTIONS['context_processors']
因此您的设置应类似于以下内容:
TEMPLATES = [
{
'BACKEND": "django_jinja.backend.Jinja2',
'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 - 上下文处理器无法与 Django 中的 Jinja2 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50445051/