递增变量时重置Jinja for循环范围

递增变量时重置Jinja for循环范围,第1张

递增变量时重置Jinja for循环范围

如Jinja2模板参考中所述,这确实是一个范围界定问题:

作用域行为

请记住,无法在块内设置变量并使变量显示在块外。这也适用于循环。

[…]

从版本2.10开始,可以使用

namespace
允许跨范围传播更改的对象来处理更复杂的用例[。]

因此,您可以使用

namespace()
该类作为变通方法:

{% set ns = namespace(items=0) %}{% for line in current_order.order_lines %}    {% set ns.items = ns.items + line.quantity %}{% endfor %}{{ ns.items }}

就是说,如果您先计算项目计数并将其作为对象或其他上下文的一部分传递到模板中,那就 更好

current_order

另一个选择是使用

sum()
过滤器对这些数量求和:

{% for line in current_order.order_lines %} #loops twice in current test    <!-- render order line -->{% endfor %}{{ current_order.order_lines|sum(attribute='quantity') }}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5667787.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存