Jinja2默认过滤器与数字字段的堆叠问题



我正试图编制一份报告,列出许多温度,其中一些可能不存在。temps需要四舍五入到小数点后1位,然后相互相减。

<tr>
<td>Average temp</td>
<td>{{ v.previous_temp|default('')|round(1) }}</td>
<td>{{ v.temp|default('')|round(1) }}</td>
<td>{{ (v.temp - v.previous_temp)|default('')|round() }}</td>
</tr>

问题是,当我尝试默认为"时,如果Jinja看到缺少临时,它仍然会爆炸,因为它试图对字符串变量进行计算。设置为一个数字可以解决这个问题,但我会显示错误的数据。

有没有办法设置一个"数学证明"默认值,或者一个"停止过滤"过滤器,这样在默认情况下甚至不会尝试轮次?

我知道我可以用{%if temp in v%}包装器来做到这一点,但用我所有的变量,这将导致一个混乱的模板!

有什么想法吗?

为什么不测试不在温度范围内的默认变量?:

<tr>
{% if ((v.previous_temp|default(-1000)) != -1000) and ((v.temp|default(-1000)) != -1000) %} 
<td>Average temp</td>
<td>{{ v.previous_temp|round(1) }}</td>
<td>{{ v.temp|round(1) }}</td>
<td>{{ (v.temp - v.previous_temp)|round() }}</td>
{% endif %}
</tr>

最新更新