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 をあまり使用しませんが、python 3.x で jinja2 を使用しました。jade と pyjade のドキュメントに基づいて、あなたが持っているのは有効な jade 構文ではありません: Jinja のwith ステートメントは jade ではサポートされておらず、pyjade は jade テンプレートへの python コードの埋め込みをサポートしていません (たとえばUsing python code in pyjadeも参照してください)。

したがって、別の構造を使用する必要があります。withwith ステートメントの変数の内部スコープを作成するだけなので、これはかなり簡単です。このスコープの外では、with変数は表示されません。「if メッセージ」は、空のリストではなく、messages可能な場合にのみ必要です。Noneだから、次のようなことを試してください:

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

Python 3.4ではpyjade Webサイトの基本的な例でさえ機能しないため、python 2.7を使用していると思います。

しかし、あなたの使用endforなどは、これらのキーワードについて何も述べておらず、それらが必要ないことを明確に示している jade のドキュメントを見ていないと思います。彼らが言うように、「RTFM」は常に役立ちます。その後、質問をより具体的にすることができます。

于 2015-02-01T16:32:56.557 に答える