幾年後,我回到了django,我採用了基於類的視圖 - 絕對是粉絲,但由於某種原因,我無法讓我的自定義內容處理器顯示其數據。我在我的應用程序中主要使用了泛型視圖,並且根據我的理解,它們應該自動爲視圖提供上下文。使用ListView的自定義ContextProcessor - 未在模板中顯示
這是我的背景處理器(context_processors.py)
from models import Alert
def context_alerts(request):
alert_list = {}
alerts = Alert.objects.filter(to_user=request.user)
alert_list['alerts'] = alerts
alert_list['unread_count'] = len([a for a in alerts if a.unread == True])
# printing to console - this works
print alert_list
return alert_list
需要注意的是,當我打印字典 - 它顯示在我的控制檯上,所以我知道它是射擊。
這是我的設置設置爲使
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',
'part_iq.context_processors.context_alerts'
],
},
},
]
最後,這是一個例子視圖 - 我有大約20個左右,所有的標準類爲本次:
class BuyerRfqList(ListView):
context_object_name = "rfqs"
template_name = "dashboard/buyer/rfq-list.html"
def get_queryset(self):
user = self.request.user
rfqs = Rfq.objects.filter(from_user=user, hidden=False).order_by("created_at")
return rfqs
我只需輸出模板中的警報(嘗試使用字典的名稱和上下文處理器功能):
{{alert_list.unread_count}}
{{context_alerts.unread_count}}
沒有運氣。
我覺得這東西很明顯,但我太生疏瓦特/ Django和新ClassBasedViews弄明白
感謝您的回覆,但我很抱歉 - 我搞砸了我的第一個問題,我實際上在我的模板(編輯)中將其作爲{{alert_list.unread_count}}。計數的目的是爲那些未讀(相對於查詢集中的所有內容)。+1作爲答案 – picus