假设我有一个内容插件,可以在插件的上下文中添加变量{{ 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; ...
答案 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