Я хочу отобразить дерево файлов внутри определенной папки (РЕЗУЛЬТАТЫ) на моей html странице. Я использую python Tornado. Я использовал ответ на этот вопрос , чтобы получить большую часть пути, и модифицировал, чтобы попытаться работать с Tornado.
В приведенном ниже коде верхний каталог отображается как заголовок, и папки внутри верхнего каталога отображаются, но шаблон не oop просматривает элементы в поддеревьях.
Вот вызов рендеринга:
def get(self):
logging.info("Loading Results tree...")
self.render("results.html", tree=make_results_tree('RESULTS'))
Вот функция make_results_tree:
def make_results_tree(path):
tree = dict(name=path, children=[])
lst = os.listdir(path)
if (path == 'RESULTS' and len(lst) == 1):
tree['children'].append(dict(name="No results recorded for today"))
else:
for name in lst:
fn = os.path.join(path, name)
if os.path.isdir(fn):
tree['children'].append(make_results_tree(fn))
elif (name != '.gitkeep'):
tree['children'].append(dict(name=name))
return tree
Я проверил, что код python работает так, как задумано, поэтому проблема заключается в коде шаблона ниже (результаты. html), вероятно, в if или l oop block:
<div class="center">
<h2>{{ tree['name'] }}</h2>
<ul>
{% for item in tree['children'] %}
<li>{{ item['name'] }}
{% if locals().get('item["children"]', False) %}
<ul>{{ loop(item['children']) }}</ul>
{% end %}</li>
{% end %}
</ul>
</div>
Почему код шаблона не l oop проходит через несколько уровней дерева?