0

我想迭代一组对象并找到一个特定属性的最大值,但是 jinja2 忽略迭代器内对在迭代器外部声明的变量的任何操作。例如:

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

datum.frequencydatum对于某些in肯定大于 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 编写: Custom jinja2 filter for iterator

一旦你的过滤器返回你需要使用'|'访问它的值 像这样:

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