For循环仅在django中的一个模板中工作
我试图建立一个教育网站,并试图把所有类别的循环使用的下拉菜单中的导航栏。我把它放在base.html中,所有其他模板都扩展了base.html。但这些项目仅显示在其模板为home.html的根页面中 我曾经尝试过将多个上下文传递给所有帖子 base.html:For循环仅在django中的一个模板中工作,django,python-3.x,Django,Python 3.x,我试图建立一个教育网站,并试图把所有类别的循环使用的下拉菜单中的导航栏。我把它放在base.html中,所有其他模板都扩展了base.html。但这些项目仅显示在其模板为home.html的根页面中 我曾经尝试过将多个上下文传递给所有帖子 base.html: {%load static%} {%block title%}离子{%endblock%} {cat%中的cate为%1} {%endfor%} {%if user.u经过身份验证%} {%else%} {%endif%} {%if消
{%load static%}
{%block title%}离子{%endblock%}
{cat%中的cate为%1}
{%endfor%}
{%if user.u经过身份验证%}
{%else%}
{%endif%}
{%if消息%}
{消息%中的消息为%s}
{{message}}
{%endfor%}
{%endif%}
{%block content%}{%endblock%}
不会,因为其他页面(除了主页)中没有类别数据。因此,您可以在每个视图中通过上下文变量cat
发送类别变量,也可以创建一个,如下所示:
def cat_on_all_pages(request):
return {'cat': Category.objects.all()}
并将其添加到设置中:
'OPTIONS': {
'context_processors': [
'path.to.cat_on_all_pages',
# other context processors
],
}
如果添加自定义上下文处理器,则可以从主视图中的上下文中删除cat
。我不知道为什么会出现这种情况,因为您只在主视图中发送它们。如果希望它们出现在每个页面上,请使用上下文处理器或自定义模板标记。