繁体   English   中英

声明不在jinja工作

[英]Do statement not working in jinja

我正在改变现有的Web界面来查看ROBOT doc库,它使用jinja(HTML内部的Python)和HTML的混合。 我以前从未使用过jinja或HTML,并且在遇到简单的测试用例时遇到了问题。 当浏览器加载文档时,我希望保留文档的项目目录结构,以便更容易查找,因此我想使用jinja创建dir结构。 这是我正在使用的代码片段:

{% 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语句,它的工作原理。 有谁知道我做错了什么?

模板文档

表达声明

如果加载了expression-statement扩展,则可以使用名为do的标记,其作用与常规变量表达式( {{ ... }} )完全相同; 除了它不打印任何东西。 这可以用来修改列表:

 {% do navigation.append('a string') %} 

您需要启用Expression语句扩展才能使其正常工作。

您没有显示如何加载Jinja2环境,但是通过extensions Environment()extensions参数加载扩展:

jinja_env = Environment(extensions=['jinja2.ext.do'])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM