首页 文章

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

提问于
浏览
0

上下文处理器在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

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

相关问题