1

我正在尝试转换此 html

{% with messages = get_flashed_messages() %}
  {% if messages %}
    {% for message in messages %}
    <div class="alert alert-danger" role="alert">
      Error: {{ message }}
    </div>
    {% endfor %}
  {% endif %}
{% endwith %}

为玉。我试过了

with messages = get_flashed_messages()
    if messages
        for message in messages
            .alert.alert-danger(role="alert")
                Error: {{message}}
        endfor
    endif
endwith

但是“messages = get_flashed_messages()”只是打印到页面上。对于何时使用jade语法以及何时使用flask/Jinja2语法,我仍然有些困惑。

4

1 回答 1

0

我不怎么用jade或者pyjade,但是我用过jinja2和python 3.x。根据jade 和pyjade 文档,您所拥有的不是有效的jade 语法:Jinja 的with 语句在jade 中不受支持,pyjade 也不支持在您的jade 模板中嵌入 python 代码(另请参见在 pyjade 中使用 python 代码示例)。

因此,您必须使用不同的构造。这应该相当简单,因为它with只是为 with 语句的变量创建了一个内部范围;在这个范围之外,with变量是不可见的。“如果消息”只有当messages可以None而不是空列表时才需要。所以尝试这样的事情:

if messages
    for message in get_flashed_messages()
        .alert.alert-danger(role="alert")
            Error: {{message}}

我认为您使用的是 python 2.7,因为对于 python 3.4,即使 pyjade 网站上的基本示例也不起作用。

但是你使用endforand 这样让我觉得你没有看过玉文档,它没有提到这些关键字,并且清楚地表明它们是不需要的。正如他们所说,“RTFM”总是有帮助的,那么你的问题可以更具体。

于 2015-02-01T16:32:56.557 回答