Как сделать общий запрос в django для системы уведомлений?

У меня есть иконка "колокольчик" на навигационной панели - которая показывает уведомление для каждого пользователя! На данный момент все навигационные панели сделаны общими макетами и включены в блоки каждой страницы в django.

Теперь проблема в том, что когда я перехожу на экран, ему нужно сделать запрос на модели уведомлений для отображения уведомлений! А у меня 24 страницы, и это означает, что уведомления должны быть получены 24 раза.

Как сделать это эффективно, чтобы i just query once and show notification on each page when user visits there

Пожалуйста, подскажите, я не знаю, какой код показать. Если вам нужен какой-либо код, пожалуйста, укажите его в комментарии

Для использования одного и того же значения переменной во многих шаблонах в Django, вы можете использовать контекстный процессор

Создайте файл context_processors.py в вашем приложении. И напишите свою логику внутри него.

from app.models import Notifications

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

Добавьте его в Django context_processors в переменной TEMPLATES (файл настроек)

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

В конце в вашем файле шаблона

{{ notifications_count }}

У вас есть это значение во всех ваших файлах шаблонов.

Вернуться на верх