1个循环中循环2变量的Jinja2范围

2024-03-28 17:23:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用jinja2,我正在硬时间将idx变量设置为forloop。似乎Jinja在说idx是数据记录中的一个键。是否有一种方法可以设置idx将被视为循环中的一个变化变量,而不是一个键。谢谢

更新

我只需要循环索引1-6,因为数据中的索引0在其他地方使用

如何在Python中将此代码转换为Jinja2

for idx in range(1,7):
    print(report_rec.soundings.0.fuel_tank.idx.tank_no)
    print(report_rec.soundings.0.fuel_tank.idx.length)
    print(report_rec.soundings.0.fuel_tank.idx.volume)

数据示例


'soundings': [{
    'pkey': '5f17a3f7c511d0b094326274',
    'fuel_tank': [{
        'tank_no': '1',
        'length': '1',
        'volume': 1.0,
    }, {
        'tank_no': '2',
        'length': '2',
        'volume': 2.0,
    }, {
        'tank_no': '3',
        'length': '3',
        'volume': 3.0,
    }, {
        'tank_no': '4',
        'length': '4',
        'volume': 4.0,
    }, {
        'tank_no': '5',
        'length': '5',
        'volume': 5.0,
    }, {
        'tank_no': '6',
        'length': '6',
        'volume': 6.0,
    }, {
        'tank_no': '7',
        'length': '7',
        'volume': 7.0,
    }]

这是我的HTML代码

{% for idx in range(1,7) %}
    <tr>
      <td>Tank No</td>
      <td><input name="ft_tank_{{idx}}" type="text" value="{{ report_rec.soundings.0.fuel_tank.idx.tank_no }}"></td>
      <td>CM</td>
      <td><input name="ft_length_{{idx}}" type="text" value="{{ report_rec.soundings.0.fuel_tank.idx.length }}"></td>
      <td>Volume(ltr)</td>
      <td><input name="ft_volume_{{idx}}" type="text"value="{{ report_rec.soundings.0.fuel_tank.idx.volume }}" ></td>
    </tr>
{% endfor %}


Tags: 数据nonamereportinputtypelengthtd
2条回答

可以使用{{ loop.index }}获取for循环中的索引

鉴于这种结构

{% for tank in report_rec.soundings.0 %}
    {{ tank.tank_no }}
    ... etc.
{% endfor %}

作为一种迭代坦克的方法,似乎效果更好

如果要忽略第一个油箱,可以利用Jinja2提供的特殊loop变量。(见here

{% for tank in report_rec.soundings.0 %}
    {% if loop.index0 > 0 %}
        {{ tank.tank_no }}
        ... etc.
    {% endif %}
{% endfor %}

相关问题 更多 >