Как сделать общий запрос в 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 }}
У вас есть это значение во всех ваших файлах шаблонов.