Каждый раз, когда к моему приложению делается запрос, я использую промежуточное программное обеспечение для извлечения и сохранения объекта «Страница», в котором есть информация, относящаяся к этой конкретной странице.Я храню ссылку на этот объект в объекте запроса, вот пример:
class PageMiddleware(object):
def process_request(self, request):
if not hasattr(request, 'page'):
request.page = Page.objects.get(slug=<slug>)
return None
Это работает достаточно хорошо, но я хочу получить доступ к этому объекту в теге шаблона.Теги шаблона имеют только ссылку на контекстную мысль, что означает, что я не могу видеть свой объект Page.
Я знаю, что для этого я могу использовать собственный контекстный процессор, но это означает дальнейшее изменение файла настроек, и я хотел бы попытаться сохранить это приложение как можно более инкапсулированным.Например, я заметил, что приложению панели инструментов отладки удается добавлять данные в контекст шаблона без изменения TEMPLATE_CONTEXT_PROCESSORS.
Короче говоря, я хочу получить доступ к своему объекту Page в теге шаблона в идеале, просто используя промежуточное ПО.Любые идеи?
Редактировать: я использую стандартный тег шаблона со следующим классом:
class GetPageContentNode(Node):
def __init__(self, key):
self.key = key
def render(self, context):
return context['request'].page