12

私は次のようなデータ構造を持っています

data = {{'value': 1, 'state': False},
        {'value': 2, 'state': True}}

外部条件に基づいて状態と値が変化する場所。

Jinja2を使用したい...elseループのような条件

{% for item in data where item.state == True %}
   {{ item.value }}
{% else %}
   no true items
{% endfor %}

私は複数の場所でデータ構造を使用していますが、すべてを表示する必要がある場合もあります。構造のコピーを1つだけ保持し、Jinja2テンプレートで、状態== Trueのアイテムの表示、またはアイテムがないというメッセージの表示を、前処理するのではなく、処理してもらいたいです。テンプレートに渡す前、または構造を複数の部分に分割する前のPython。

これは、Python2.7およびJinja22.6を搭載したGoogleApp Engineで実行されており、データ構造はmemcacheによってサポートされています。

4

2 に答える 2

26

これはあなたが探しているものですか:

 {% for item in data if item.status %}
   {{ item.value }}
 {% else %}
   no true items
 {% endfor %}
于 2012-09-29T19:11:50.987 に答える
0

Jinja2のマクロ内からグローバル属性にアクセスすることをお勧めします。Flaskを使用している場合は、テンプレートコンテキストプロセッサを確認できます。その価値のために、私が(Flaskで)行うことは、アプリインスタンスの一部であるインスタンス変数を作成することです。Jinja2環境で同じことができない理由がわかりません。つまり、辞書をJinja2の環境に追加し、テンプレートで使用できるようにするために必要なもの(ある場合)を確認します。

于 2012-09-29T23:29:50.913 に答える