Django - Как установить переменную в шаблоне макета и использовать ее во всех представлениях - PullRequest
0 голосов
/ 04 августа 2020

Я хотел бы установить переменную и отобразить ее в верхней части навигации. Я хотел бы подсчитать количество полученных писем и отобразить число в меню, информирующее пользователя, что у них есть, например, 3 сообщения.

Так же, как вы можете получить доступ к своему идентификатору пользователя или имени пользователя, я хочу получить доступ к количеству электронное письмо, полученное пользователем.

Я проверял, как установить глобальные переменные, но, возможно, я могу сделать еще кое-что. Пожалуйста, дайте мне знать, если вам понадобится дополнительная информация.

Ответы [ 2 ]

1 голос
/ 04 августа 2020

вы можете создать обработчик контекста:

myapp / processor.py

def add_email_count(request):
   context = {
      'email_count': request.user.email_count(),
      'exemple_list': [44, 55, 99]
   }
   return context

settings.py , добавьте путь к ваш процессор в context_proceesors:

TEMPLATES = [
    {
         ... 
        'OPTIONS': {
            'context_processors': [
                ....
                'myapp.processor.add_email_count'
            ],
        },
    },
]

, и вы можете получить его во всех шаблонах:

{{ email_count }}

{% for number in exemple_list %}
  {{ number }}
{% endfor %}
1 голос
/ 04 августа 2020

В вашем представлении вы можете определить в своем представлении переменную session, чтобы вы могли использовать ее во всех представлениях. Например:

views.py

request.sessions['received_email_count'] = 1

При переходе к следующему представлению вы можете увеличить это число следующим образом:

request.sessions['received_email_count'] += 1

Эту переменную сеанса можно использовать в шаблоне следующим образом:

шаблон. html

{{ request.session.recieved_email_count }}
...