【问题标题】:Context Processors are not working with Jinja2 in Django上下文处理器不适用于 Django 中的 Jinja2
【发布时间】: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 有何看法。请回复我。

标签: django jinja2


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2016-10-09
    • 2010-10-07
    • 2016-07-01
    • 1970-01-01
    • 2017-10-24
    • 2019-07-18
    • 1970-01-01
    • 2010-10-24
    • 1970-01-01
    相关资源
    最近更新 更多