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

如何在Jinja模板中为列表输出添加索引标识?

问题描述

我通过Python代码向Jinja模板传入了列表:

list = [123,232,334,412]

希望在输出中为每个列表项添加索引,预期输出:

some text id1 = 123, id2 = 232, id3 = 334, id4 = 412

我尝试了以下模板代码:

some text {{ list | join(', id = ' ) }}

但输出未包含索引:

some text id = 123, id = 232, id = 334, id = 412

请问如何实现带索引的输出?

解决方案

方法1:模板内用enumerate循环拼接

Jinja原生支持enumerate过滤器,可直接遍历列表并带上起始索引,再通过循环拼接成目标格式:

some text {% for idx, num in list | enumerate(start=1) %}id{{ idx }} = {{ num }}{% if not loop.last %}, {% endif %}{% endfor %}
  • start=1让索引从1开始计数,符合示例需求
  • loop.last用来判断是否为最后一项,避免末尾多输出逗号

方法2:Python端预处理后传值

如果不想在模板中写过多逻辑,可在Python代码里先把列表转换成带索引的字符串集合,再传给模板:

my_list = [123,232,334,412]
formatted_items = [f"id{i+1} = {num}" for i, num in enumerate(my_list)]
# 将formatted_items传入模板上下文

模板中直接用join拼接即可:

some text {{ formatted_items | join(', ') }}

方法3:自定义Jinja过滤器

可以注册一个自定义过滤器,封装带索引拼接的逻辑,让模板调用更简洁:
首先在Python中注册过滤器:

from jinja2 import Environment

def join_with_index(lst, start=1):
    return ', '.join([f"id{i+start} = {num}" for i, num in enumerate(lst)])

# 注册过滤器到Jinja环境
env = Environment()
env.filters['join_with_index'] = join_with_index

然后在模板中直接使用:

some text {{ list | join_with_index(start=1) }}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 00:52:34