Django cms получает переменную содержимого в родительском шаблоне

Скажем, у меня есть плагин контента, который добавляет переменную {{ category }} в контекст плагина.

Плагин может отображаться ноль или несколько раз в заполнителе. Мне все равно, какую переменную я получаю, но я хочу получить к ней доступ из родительского шаблона, например.

plugin.html

<div class="widget">
    {{ category }}
</div>

home.html

{% extends "base.html" %}

<h1>{{ category }}</h1>  <!-- I want the optional variable here -->
<div class="main">
    {% placeholder content %}
</div>

Я знаю, что feincms использует тег шаблона под названием «фрагмент», который может добавлять и проверять переменные в объекте запроса, но кажется, что django-cms не имеет такой системы, так как же правильно это сделать?

Я попытался добавить его в сеанс в плагине;

def render(self, context, instance, placeholder):
    ...
    request = context['request']
    request.session['category'] = instance.category
    ...

Это работает, но только после обновления страницы, иначе переменная находится «на одну страницу позади»...


person user2298943    schedule 13.03.2015    source источник


Ответы (1)


Поскольку вы хотите, чтобы это было почти в каждом шаблоне, возможно, создайте свой собственный процессор контекста и добавьте его в settings.TEMPLATE_CONTEXT_PROCESSORS?

# yourapp.filename.py
def context_processor(request):
    category = ...
    return {
        "category": category,
    }

И добавьте следующую строку в settings.TEMPLATE_CONTEXT_PROCESSORS

yourapp.filename.context_processor
person Blackeagle52    schedule 13.03.2015