jinja2 模板中使用 `{% set %}` 声明的变量在循环内无法真正“更新”,因其作用域为局部且每次 `{% set %}` 实际创建新变量而非修改原值;应改用数学表达式(如 `5 + loop.index0 * 10`)实现动态计算。
在 Flask 的 Jinja2 模板中,{% set %} 并不支持传统编程语言中的“可变变量赋值”语义。当你在循环内写 {% set x_value_weeks = x_value_weeks + 10 %} 时,Jinja2 并不会就地修改外层变量,而是基于当前作用域创建一个同名新变量——但由于 Jinja2 的作用域规则(尤其是循环内部的变量绑定机制),该赋值通常不会影响后续迭代中的读取,导致 x_value_weeks 始终显示初始值(如 5)。
✅ 正确做法是:避免依赖可变状态,转而使用纯函数式表达式。利用 Jinja2 内置的 loop 对象(如 loop.index0 表示从 0 开始的索引)直接计算每个 SVG 的 x 坐标:
{% for week in weeks %}
<!-- SVG content: e.g., -->
{% endfor %}
? 关键说明: