在.py文件中,我有一个函数,在给定一个ziped文件的情况下创建一个包含信息(名称,类型,大小等)的树。 (我想创建这个ziped文件的树视图)还有另一个函数为组件名称生成<ul>
和<li>
标签,如果有子组件则嵌套。该功能不会返回任何内容。
我想要的是在jinja模板中有一个块,显示上述函数的html代码。
功能是:
def print_tree(tree):
print "<ul>"
for t in tree:
print "<li>" + t['name']
if 'children' in t:
print_tree(t['children'])
print "</li>"
print "</ul>"
我该怎么做?
答案 0 :(得分:3)
让你的函数返回一个字符串,而不是打印:
def print_tree(tree):
result = ['<ul>']
for t in tree:
result.append("<li>" + t['name'])
if 'children' in t:
result.append(print_tree(t['children']))
result.append("</li>")
result.append("</ul>")
return '\n'.join(result)
你可以直接在Jinja做同样的事情而没有一个功能:
<ul>
{%- for t in tree recursive %}
<li>{{ t.name }}
{%- if t.children -%}
<ul>{{ loop(t.children) }}</ul>
{%- endif %}</li>
{%- endfor %}
</ul>
此处loop()
调用将重用标记为for
的{{1}}循环,以recursive
函数的方式生成递归树结构。