我只是想知道是否有一种简单的方法可以做到这一点。
说我有index.html:
<HTML>
{% include 'sidebar.html' %}
</HTML>
和sidebar.html页面:
<b>{{company}}</b>
index.html的views.py视图包含一个上下文,例如:
context['company'] = Company.objects.get(id=3)
我的问题如下。该侧边栏和该变量将被加载到许多页面中,我宁愿不将上下文加载到使用公司名称的每个视图中。我只想将其包含在侧边栏中,并且每次都包含它。
所以从本质上讲,我想从每个使用它的视图中提取它来减少冗余。
谢谢!
答案 0 :(得分:3)
您需要创建自己的上下文处理器:
def company_context(request):
return {
'company':Company.objects.get(id=3),
}
在设置中将新的上下文处理器添加到TEMPLATE_CONTEXT_PROCESSOR 例如:
TEMPLATE_CONTEXT_PROCESSORS = (
"django.contrib.auth.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.contrib.messages.context_processors.messages",
"path.to.context.processor.company_context",
)
之后你在视图中照常使用渲染:
return render(request, self.template_name, {})
如果您不使用渲染,请确保使用RequestContext