如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') }}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)