0

オブジェクトのセットを反復処理して、特定の 1 つの属性の最大値を見つけたいのですが、jinja2 は、反復子の外部で宣言された変数に対する反復子内のアクションを無視します。例えば:

{% set maximum = 1 %}
{% for datum in data %}
    {% if datum.frequency > 1 %}
        {% set maximum = datum.frequency %}
    {% endif %}
{% endfor %}
{# maximum == 1 #}

datum.frequencydatumの一部では、 が 1 より大きいことは間違いありませんdata

編集(解決策)

これはこの投稿にていますが、もう少しあります。以下は機能し、非常に醜いです。

{% set maximum = [1] %}
{% for datum in data %}
    {% if datum.freq > maximum[-1] %}
        {% if maximum.append( datum.freq ) %}{% endif %}
    {% endif %}
{% endfor %}
{% set maximum = maximum[-1] %}
4

1 に答える 1

1

コレクション内の特定の属性の最大値を返すカスタム フィルターを作成することを検討したことはありますか? 「関心の分離」を維持する一環として、Jinja2 テンプレートで使用するロジックの量を最小限に抑えることを好みます。

Python でどのように記述できるかの非常に良い例へのリンクを次に示し ます。

フィルターが必要な値を返すようになったら、'|' を使用してアクセスします。そのようです:

{% set maximum = datum|filtername %}
于 2013-07-19T14:27:06.543 に答える