我试图创建包含标签,因此我可以在每个页面的导航栏中显示数据。标签将被包含在“base.html”中,以便它应该在任何地方显示。Django包含标签不显示数据
tags.py
@register.inclusion_tag('menu.html')
def show_hoods(HoodList):
gethoods = Hood.objects.all()
return {'gethoods': gethoods}
menu.html
{% for hood in gethoods %}
<h3>{{ hood.name }}</h3>
{% endfor %}
出于某种原因,menu.html模板是空白的,并且不显示任何数据。另外,一旦我运行了menu.html,简单的{%include'menu.html'%}会在base.html里面工作吗?会自动呈现吗?
编辑: 基于下面的反馈,上述代码是正确的,但是base.html文件代码是不正确的使用inclusion_tag未装载有{%包括%}但{% load %}
代替。
修正base.html文件
{% load tags %}
{% show_hoods hoodlist %}
感谢您的反馈!
你如何在base.html中添加包含标签?另外,什么是HoodList? –
HoodList只是该请求的名称,我应该将其重命名为“请求”吗?根据我计划使用{%include%}标记的base.html。 – WayBehind
使用名称添加包含标签。因此,在base.html中添加{%show_hoods%}应该使用Hood对象列表来呈现menu.html。直接查看menu.html会显示为空,因为menu.html需要show_hoods中传入的上下文变量(gethoods)。 –