我有一个动态菜单,我包括在多个模板。(侧边栏.html)你知道吗
<div class="sidebar">
<h3>Service Menu</h3>
<ul>
<li><a href="{% url 'service:showrooms' %}">Showroom</a></li>
{% for link in major_sites %}
<li><a href="{% url 'service:majorsite' link.id %}">{{ link.location }}</a></li>
{% endfor %}
</ul>
</div>
在我看来,我会得到如下数据
def index(request):
model_urls = MajorSiteInfoData.objects.only('location')
return render(request, 'service/index.html', {
'link': model_urls,
})
但是我在这个应用程序中有大约9个视图都需要这个菜单,我怎么能重用数据而不是对每个视图查询9次呢?你知道吗
谢谢
在django中,可以使用上下文处理器的概念。只需编写一个函数,每个请求都会调用它。它必须返回您要添加的上下文字典,在您的情况下,该字典类似于:
在
TEMPLATES
设置中将此可调用添加到上下文处理器列表后,呈现的每个模板现在都将在其上下文中具有link
(因此您可能需要使用不同的名称)。django documentation on writing your own context processors。你知道吗或者,可以编写自定义模板标记来呈现此菜单。django documentation on writing custom template tags
在应用程序目录中创建文件
context_processors.py
。在那里,创建一个函数把它放在
settings.py
上面的代码将变量添加到每个模板上下文中。这部分可能是必要的,也可能不是必要的,我不知道你已经在别处加载变量了。你知道吗
然后创建一个部分模板
partial_menu.html
如果你想在模板中显示它,
include
它。你知道吗相关问题 更多 >
编程相关推荐