自定义 Django 上下文处理器不返回任何值

Custom Django context processor not returning any value

我已经为 return 一些常用变量编写了自定义上下文处理器。我遵循了多个教程并阅读了官方文档,但没有任何反应:上下文处理器未加载或未 returning 任何值。我没有收到任何错误。

应用名称: 拍卖

context_processors.py

def test_context_processor(request):
    return {
        'message': 'Hello, world.'
    }

settings.py

...

TEMPLATES = [
    {
        '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',
                'django.template.context_processors.media',
                'auctions.context_processors.test_context_processor'
            ],
        },
    },
]

...

layout.html

...

<h1>{{ test_context_processor.message }}</h1>

...

当我检查 H1 元素时,它是空的 - 什么都没有 returned。它看起来像这样:

<h1></h1>

我试过:

我能想到的是,每个教程示例都使用上下文处理器 return 数据库中的对象列表,而我只是 return 一个普通字符串值。但肯定没关系,对吧?谢谢!

在您的模板中,您“接近成功”了:

{{ test_context_processor['message'] }}

唯一的问题是上下文处理器只是将数据直接添加到模板上下文中——它本质上是一个保存模板变量的字典。他们不在任何范围内或在任何名称下命名它,当然不是与上下文处理器名称相对应的名称。

所以你只需要这样做:

{{ message }}