【发布时间】:2017-02-12 23:13:02
【问题描述】:
我正在更改现有的 Web 界面以查看 ROBOT 文档库,它混合使用了 jinja(HTML 中的 Python)和 HTML。我以前从未使用过 jinja 或 HTML,即使是简单的测试用例也无法正常工作。当浏览器加载文档时,我希望保留我们项目的文档目录结构,以便于查找,因此我想使用 jinja 创建目录结构。这是我正在使用的代码的 sn-p:
{% extends "base.html" %}
{% block body %}
<div class="well" id="left">
<ul class="list-group list-unstyled">
{% set collection_list = [] %}
{% for collection in data.hierarchy %}
{% if collection.collection_id|string == data.collection_id|string %}
{% do collection_list.append(collection.path) %}
{% else %}
{% for link in collection.path_chain %}
<li>
<label class="tree-toggler nav-header"
title="file path: {{collection.path}}">{{link}}</label>
<ul class="list-group tree collapse"
id={{link}}>
</ul>
{% endfor %}
</li>
{% endif %}
...之后还有更多内容,但这是我遇到错误的地方。它将 collection_list var 设置得很好,并且 if 语句可以工作,但是当它执行“do”语句时,它会失败:
TemplateSyntaxError:遇到未知标签“do”。 Jinja 正在寻找以下标签:“elif”或“else”或“endif”。需要关闭的最里面的块是'if'。
我不相信这是一个未闭合的循环或其他东西,因为如果我用一个简单的测试打印语句替换 do 语句,它就可以工作。有谁知道我做错了什么?
【问题讨论】:
-
第一个问题是,Jinja 有'do' 语句吗?我问是因为 Python 没有,据我所知。
-
应该是这样 - 我找到了诸如 '{% do navigation.append('a string') %}' 之类的示例,尽管它可能是版本/缺少扩展的东西?