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



我编写了一个自定义上下文处理器来返回一些常用的变量。我已经学习了多个教程并阅读了官方文档,但什么都没有发生:上下文处理器要么没有加载,要么没有返回任何值。我没有犯任何错误。

应用程序名称:拍卖

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 }}

相关内容

  • 没有找到相关文章

最新更新