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

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

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

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

Спасибо

18
задан Evgeny 27 September 2011 в 12:41
поделиться

2 ответа

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

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

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

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

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

17
ответ дан 30 November 2019 в 07:38
поделиться

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

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

И не делайте тень dict.

0
ответ дан 30 November 2019 в 07:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: