Подтвердить что ты не робот

Как передать общие словарные данные на каждую страницу в django

У меня есть общие данные (номер пользователя для входа в систему) для отображения на каждой странице. Я могу просто перейти к шаблону как

dict={'messagenumber':5}
return render_to_response('template.html',dict,context_instance=RequestContext(request))

Но это выглядит утомительно, если я передаю данные этого диктатора на самую страницу. Есть ли более простой способ передать общие данные на каждую страницу?

Спасибо

4b9b3361

Ответ 1

Меня отталкивает, как это распространено. Вы хотите использовать контекстные процессоры мой друг!

Очень легко создать, например:

def messagenumber_processor(request):
   return {'messagenumber': 5}

Так как messagenumber - это динамическая переменная на основе User, вы можете извлекать данные из базы данных, выбирая из request.user, поскольку у вас есть полный доступ к request в каждом процессоре контекста.

Затем добавьте это в свой TEMPLATE_CONTEXT_PROCESSORS в settings.py, и вы все настроены:-) Вы можете сделать любую форму операции с базой данных или другой логикой в ​​процессоре контекста, попробуйте!

Ответ 2

Просто, чтобы сэкономить время, если новое для django

settings.py

TEMPLATE_CONTEXT_PROCESSORS = ("django.contrib.auth.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.static",
"django.contrib.messages.context_processors.messages",
"home.context_processor.remote_ip")

в домашнем приложении, создайте файл python с именем context_processor.py

в context_processor.py добавьте такую ​​функцию:

def remote_ip(request):
  return {'remote_ip': request.META['REMOTE_ADDR']}

используйте его в шаблонах, например {{remote_ip}}

Ответ 3

Напишите свою собственную функцию для ее обработки.

def render_with_message_number(template, message_number, request):
    return render_to_response(template, dict(messagenumber=message_number),
        context_instance=RequestContext(request))

И не тень dict.