我编写了一个自定义上下文处理器来返回一些常用的变量。我已经学习了多个教程并阅读了官方文档,但什么都没有发生:上下文处理器要么没有加载,要么没有返回任何值。我没有犯任何错误。
应用程序名称:拍卖
context_processors.py
def test_context_processor(request):
return {
'message': 'Hello, world.'
}
设置.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元素时,它是空的——没有返回任何内容。它看起来像这样:
<h1></h1>
我试过:
- 在shell中加载函数并尝试(它有效(
- 重命名函数
- 正在重新启动服务器
{{ test_context_processor['message'] }}
(这会产生错误(- 投诉SO
我所能想到的是,每个教程示例都使用上下文处理器从数据库返回对象列表,而我只是返回一个纯字符串值。但这肯定无关紧要,对吧?谢谢
你是"几乎在那里";有了这个,在你的模板中:
{{ test_context_processor['message'] }}
唯一的问题是,上下文处理器只是将数据直接添加到模板上下文中,而模板上下文本质上是一个包含模板变量的字典。他们不在任何东西下对其进行范围界定或命名,当然也不是与上下文处理器名称相对应的名称。
所以你只需要这样做:
{{ message }}