[英]Custom Django context processor not returning any value
我编写了一个自定义上下文处理器来返回一些常用的变量。 我遵循了多个教程并阅读了官方文档,但没有发生任何事情:上下文处理器要么没有加载,要么没有返回任何值。 我没有收到任何错误。
应用名称:拍卖
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'
],
},
},
]
...
布局.html
...
<h1>{{ test_context_processor.message }}</h1>
...
当我检查 H1 元素时,它是空的 - 没有返回任何内容。 它看起来像这样:
<h1></h1>
我努力了:
{{ test_context_processor['message'] }}
(这会产生错误)我能想到的是,每个教程示例都使用上下文处理器从数据库返回对象列表,而我只是返回一个纯字符串值。 但这肯定没关系,对吧? 谢谢!
在您的模板中,您“几乎就在那里”:
{{ test_context_processor['message'] }}
唯一的问题是上下文处理器只是将数据直接添加到模板上下文中——它本质上是一个保存模板变量的字典。 他们没有 scope 或命名空间下的任何东西,当然不是与上下文处理器名称相对应的名称。
所以你只需要这样做:
{{ message }}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.