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

Jinja模板无法使用loop.index时,自定义索引与取模运算问题

排查解决Jinja循环中自定义变量i不生效的问题

原代码存在三个核心问题,逐一修正即可解决:

  1. 变量初始化语法错误
    原代码用{{Set i=1}}定义变量是错误的:

    • Jinja中设置变量必须用{% %}标签,而非输出用的{{ }}
    • 关键字set需要小写,不能大写成Set
      正确写法:{% set i=1 %}
  2. 变量名大小写不匹配
    Jinja变量名严格区分大小写,原代码判断条件里的I和定义的变量i不一致,必须统一成小写i,即{% if i % 2 == 0 %}

  3. 循环作用域限制
    Jinja的for循环会创建局部作用域,直接在循环内用{% set i=i+1 %}无法修改外部的i变量,需要通过namespace对象来维护跨作用域的变量。

修正后的完整代码

{% set ns = namespace(i=1) %}
{% for item in items %}
    {% if ns.i % 2 == 0 %}
        Print("hello")
    {% endif %}
    {% set ns.i = ns.i + 1 %}
{% endfor %}

解释:通过namespace对象包裹变量i,循环内修改ns.i时会直接更新该对象的属性,不受循环局部作用域的限制,这样就能实现自定义计数并结合取模判断的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 01:57:05