上下文处理器不在Django中使用Jinja2

时间:2018-05-21 08:47:22

标签: django jinja2

上下文处理器在Django(Ver 2.0.5)中没有使用Jinja2(Ver 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解析使用上下文处理器是不是正确的解决方案?

1 个答案:

答案 0 :(得分:0)

您需要安装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',
            ]
        }
    },
]