自定义 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>
我试过:
- 正在加载 shell 中的函数并试用(有效)
- 重命名函数
- 正在重启服务器
{{ test_context_processor['message'] }}
(这会产生错误)
- 投诉SO
我能想到的是,每个教程示例都使用上下文处理器 return 数据库中的对象列表,而我只是 return 一个普通字符串值。但肯定没关系,对吧?谢谢!
在您的模板中,您“接近成功”了:
{{ test_context_processor['message'] }}
唯一的问题是上下文处理器只是将数据直接添加到模板上下文中——它本质上是一个保存模板变量的字典。他们不在任何范围内或在任何名称下命名它,当然不是与上下文处理器名称相对应的名称。
所以你只需要这样做:
{{ message }}
我已经为 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>
我试过:
- 正在加载 shell 中的函数并试用(有效)
- 重命名函数
- 正在重启服务器
{{ test_context_processor['message'] }}
(这会产生错误)- 投诉SO
我能想到的是,每个教程示例都使用上下文处理器 return 数据库中的对象列表,而我只是 return 一个普通字符串值。但肯定没关系,对吧?谢谢!
在您的模板中,您“接近成功”了:
{{ test_context_processor['message'] }}
唯一的问题是上下文处理器只是将数据直接添加到模板上下文中——它本质上是一个保存模板变量的字典。他们不在任何范围内或在任何名称下命名它,当然不是与上下文处理器名称相对应的名称。
所以你只需要这样做:
{{ message }}