繁体   English   中英

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

[英]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>

我努力了:

  • 在 shell 中加载 function 并试用(它有效)
  • 重命名 function
  • 重启服务器
  • {{ test_context_processor['message'] }} (这会产生错误)
  • 投诉 SO

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

在您的模板中,您“几乎就在那里”:

{{ test_context_processor['message'] }}

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

所以你只需要这样做:

{{ message }}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM