簡體   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