django-sitetree中sitetree_items始终为空,循环无输出问题求助
问题分析与解决方案
嘿,这个问题我之前也碰到过,其实核心原因很简单:sitetree_items 不会自动出现在模板的上下文变量里,你直接循环肯定拿不到数据。而 {% sitetree_menu %} 是一个自包含的渲染标签,它内部已经帮你完成了节点获取和渲染的逻辑,但手动循环的话,得先自己把节点数据取出来赋值给变量才行。
针对你的场景,正确的做法是先用 sitetree_get_menu 标签把对应菜单的节点集合注入到模板变量中,再进行循环。具体代码如下:
{% load sitetree %} {% sitetree_get_menu from "mainmenu" include "trunk" as sitetree_items %} {% for item in sitetree_items %} ITEM: {{ item.title_resolved }}<br/> {% endfor %}
关键部分解释:
{% sitetree_get_menu from "mainmenu" include "trunk" as sitetree_items %}:这行是核心,它会从你配置的名为mainmenu的站点树中,获取对应trunk(主干)部分的节点集合,然后把这个集合赋值给sitetree_items变量,这样模板就能识别到这个变量了。- 后面的循环逻辑和你写的一致,现在就能正常输出每个节点的标题了。
如果你的需求是获取整个站点树的所有节点,还可以用 sitetree_get_tree 标签,用法类似:
{% load sitetree %} {% sitetree_get_tree from "mainmenu" as sitetree_items %} {% for item in sitetree_items %} ITEM: {{ item.title_resolved }}<br/> {% endfor %}
另外,你用的 django-sitetree 1.9.0 版本完全支持这个用法,和 Django 2.0、Python 3.5.2 的兼容性也没问题,放心用就行~
内容的提问来源于stack exchange,提问作者Ulf
相关产品推荐
相关产品推荐

