如何在 Jinja 中将 loop.index 设置为变量

How to set loop.index as a variable in Jinja

{% for data in data_list %}
    {% set data_index = {{loop.index}} %} 
   for data_dict in data:
     pass
            

在我的内循环中,我需要在外循环中使用循环索引,所以我打算像上面那样将它设置为一个变量。但语法无效。

怎么做?还是有其他方法获取外循环索引?

您可以使用内置的枚举函数来获取 i 作为变量,如果需要,也可以在内部循环中使用它。

{% for i,data in enumerate(data_list) %}
    {{ i }}
    {% for j in range(i) %}
    {% endfor %}
{% endfor %}

您需要做的就是将 enumerate 或您需要的任何内置 python 函数作为参数传递给渲染模板函数,如下所示

@app.get("/foo")
def foo():
    return render_template("foo.html", enumerate=enumerate, range=range)

我认为,您不应该在语句 ({%..%}) 中使用表达式 ({{..}}),试试这个:

{% for data in data_list %}
    {% set data_index = loop.index %} 
   for data_dict in data:
     pass