Django cms在父模板中获取内容变量

时间:2015-03-13 07:47:53

标签: django 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使用名为&#34; fragment&#34;的模板标签。可以在请求对象中附加和检查变量,但似乎django-cms没有这样的系统,那么这样做的正确方法是什么?

我已尝试将其添加到插件中的会话中;

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

这只有在刷新页面后才有效,否则变量是&#34;后面有一页&#34; ...

1 个答案:

答案 0 :(得分:0)

由于您几乎在每个模板中都需要它,可以创建自己的上下文处理器并将其添加到settings.TEMPLATE_CONTEXT_PROCESSORS

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

并将以下行添加到settings.TEMPLATE_CONTEXT_PROCESSORS

yourapp.filename.context_processor