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