При наличии словаря:
menu = {'title': 'Link1',
'children': {'title': 'Child of Link1',
'children': #etc..}
}
Как можно выполнить итерацию, чтобы получить результат:
<ul>
<li>Link1
<ul>
<li>Child of Link 1
<ul>
<li>Grandchild of Link 1
<ul>etc..</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
В настоящее время я использую это, но, очевидно, оно уходит на глубину единицы.
<ul id="mainnavigation">
{% for k,v in admin.items %} #ContextProcessor, because this menu needs to know the current path.
<li class="expandable"><a href="{{ v.path }}">{{ v.title }}</a>
{% if v.children != None %}
<ul>
{% for id,child in v.children.items %}
<li class="expandable"><a href="{{ child.path }}">{{ child.title }}</a></li>
{% endfor %}
</ul>
{% endif %}
</li>
{% endfor %}
</ul>
Одним из способов было бы вручную повторить цикл для каждого уровня, однако такое решение уродливо, и я надеюсь, что есть более СУХОЙ.