Извините или запутанный заголовок! На самом деле это намного проще, чем кажется.
У меня есть функция:
def get_messages(request):
# do something expensive with the request
return 'string'
Я хочу иметь возможность вызывать эту функцию из шаблона, поэтому я привязался к обработчику контекста:
def context_processor(request):
return {'messages':get_messages(request)}
Так что теперь, когда у меня есть {{messages}}
в моем шаблоне, string
распечатывается. Большой.
Проблема в том, что get_messages
довольно дорог и не всегда нужен. Менее половины шаблонов нуждаются в этом. Есть ли способ передать функцию шаблону и оставить ее на усмотрение шаблона, если он запустится или нет?
Я пробовал это уже:
def context_processor(request):
return {'messages':get_messages}
Но это просто выводит описание функции <function get_messages at 0x23e97d0>
в шаблоне, а не запускает его.