首页 > 解决方案 > 如何在 django 中进行常见查询?

问题描述

我在导航栏上有一个“铃铛”图标 - 显示每个用户的通知。到目前为止,所有的导航栏都是通用布局,并包含在 django 中每个页面的块中。

现在的问题是,当我进入一个屏幕时,它需要对所有通知模型进行查询以显示通知。我有 24 页,这意味着需要获取通知 24 次。

如何有效地做到这一点,以便我只查询一次并在用户访问时在每个页面上显示通知

请指导,我不知道要显示什么代码。如果您需要任何代码,请在评论中提及。

标签: django

解决方案


要在 Django 中的许多模板上使用相同的变量值,您可以使用上下文处理器

在您的应用程序中创建一个 context_processors.py文件。并在里面写下你的逻辑。

from app.models import Notifications

def notifications_count(request) -> dict:
    count = Notifications.objects.count()
    return dict(notifications_count=count)

将其添加到 TEMPLATES 变量(设置文件)中的 Django context_processors

'context_processors': [
# ...
'app_name.context_processors.notifications_count',
]

在您的模板文件的最后

{{ notifications_count }}

您在所有模板文件中都有此值。


推荐阅读