【发布时间】:2017-06-29 05:21:51
【问题描述】:
我正在尝试在嵌套列表中显示“注释”。每个笔记都有一个名为parentID 的属性,表示它嵌套在下面的笔记。
目前我正在通过这样做实现单层嵌套:
models.py
class Note(Model):
title = CharField()
tags = CharField()
content = TextField()
parentID = IntegerField(default=0)
class Meta:
database = db
app.py
def getSubnotes(note):
note_id = note.id
subnotes = models.Note.select().where(models.Note.parentID == note_id)
return subnotes
app.jinja_env.globals.update(getSubnotes=getSubnotes)
Index.html
<div class="row">
<div class="medium-12 medium-centered">
<ul>
{% for note in notes %}
{% if note.parentID == 0 %}
<li><a href="/n/{{note.getHash()}}">{{ note.title }}</a></li>
<ul>
{% for subnote in getSubnotes(note) %}
<li><a href="/n/{{subnote.getHash()}}">{{ subnote.title }}</a></li>
{% endfor %}
</ul>
{% endif %}
{% endfor %}
</ul>
</div>
然而,我想递归地找到单个音符的所有子音符并将它们列出来,所以有嵌套的嵌套。
我已经将此视为如何在 jinja 中递归列出的示例(来自 jinja docs):
<ul class="sitemap">
{%- for item in sitemap recursive %}
<li><a href="{{ item.href|e }}">{{ item.title }}</a>
{%- if item.children -%}
<ul class="submenu">{{ loop(item.children) }}</ul>
{%- endif %}</li>
{%- endfor %}
</ul>
但是我对.children 的实际含义感到困惑。它是如何引用自己或同一类型的items 的?
我将如何递归地执行此操作,或者是否有更好的方法来实现相同的目标?
非常感谢任何帮助!
【问题讨论】:
标签: python python-3.x recursion flask jinja2