You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jinja2模板循环中如何将变量作为索引值而非字符串取值?

问题:循环中如何正确引用动态键值获取ports对应值?

场景复现

模板代码

not in loop 1={{ports['1']}}
not in loop 2={{ports['2']}}

{% for n in range(1, 11) %}for loop {{n}}={{ports['n']}} {# 期望此处ports['n']能变为ports['1']至ports['10'],但引号内的n被视为字符串,无法转义 #}
{% endfor %}

数据源

{
    "ports": {
        "1": "1G",
        "2": "2G",
        "3": "3G",
        "4": "4G",
        "5": "5G",
        "6": "6G",
        "7": "7G",
        "8": "8G",
        "9": "9G",
        "10": "10G"
    }
}

当前渲染结果

not in loop 1=1G
not in loop 2=2G

for loop 1=
for loop 2=
for loop 3=
for loop 4=
for loop 5=
for loop 6=
for loop 7=
for loop 8=
for loop 9=
for loop 10=

解决方案

问题核心是ports['n']里的n被当成了字符串字面量,而非循环变量。只需把数值类型的循环变量n转换成字符串,再作为键访问ports对象即可。

修改后的模板代码:

not in loop 1={{ports['1']}}
not in loop 2={{ports['2']}}

{% for n in range(1, 11) %}for loop {{n}}={{ports[str(n)]}}
{% endfor %}

原理说明

str(n)会把循环中的数值变量n转换成字符串类型,这样ports[str(n)]就会依次对应ports['1']、ports['2']……ports['10'],精准匹配数据源中的键,从而取出对应的值。

修改后正确渲染结果

not in loop 1=1G
not in loop 2=2G

for loop 1=1G
for loop 2=2G
for loop 3=3G
for loop 4=4G
for loop 5=5G
for loop 6=6G
for loop 7=7G
for loop 8=8G
for loop 9=9G
for loop 10=10G

内容的提问来源于stack exchange,提问作者NetworkLearner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 09:30:56