Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
For循环仅在django中的一个模板中工作_Django_Python 3.x - Fatal编程技术网

For循环仅在django中的一个模板中工作

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消

我试图建立一个教育网站,并试图把所有类别的循环使用的下拉菜单中的导航栏。我把它放在base.html中,所有其他模板都扩展了base.html。但这些项目仅显示在其模板为home.html的根页面中

我曾经尝试过将多个上下文传递给所有帖子

base.html:

{%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

    我不知道为什么会出现这种情况,因为您只在
    主视图中发送它们。如果希望它们出现在每个页面上,请使用上下文处理器或自定义模板标记。