You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:38:33