如何在HTML属性的引号内使用Jinja变量?
解决Jinja模板中表单字段索引替换问题
你不需要手动转义HTML属性的引号,Jinja支持直接在双引号内插入变量值。问题出在你没有正确获取循环的索引值,以下是两种可行的解决方式:
方式一:使用Jinja内置的loop变量(推荐)
利用loop.index0(从0开始计数)或loop.index(从1开始计数)获取循环索引,嵌套循环中外层索引通过loop.parentloop调用:
{% for event in events %} {% for entry in event.entries %} <td> <input id="events-{{ loop.parentloop.index0 }}-entries-{{ loop.index0 }}" name="events-{{ loop.parentloop.index0 }}-entries" type="checkbox" value="1"> </td> {% endfor %} {% endfor %}
loop.index0:当前循环的索引(从0开始),适合后端数组/列表的索引匹配loop.parentloop.index0:获取外层循环的索引,用于区分不同的event项
方式二:手动定义索引变量
如果需要自定义索引起始值或逻辑,可以通过set标签手动维护索引:
{% set event_index = 0 %} {% for event in events %} {% set entry_index = 0 %} {% for entry in event.entries %} <td> <input id="events-{{ event_index }}-entries-{{ entry_index }}" name="events-{{ event_index }}-entries" type="checkbox" value="1"> </td> {% set entry_index = entry_index + 1 %} {% endfor %} {% set event_index = event_index + 1 %} {% endfor %}
以上两种方式生成的HTML中,表单字段的id和name属性都会正确包含索引值,无需额外转义操作。
内容的提问来源于stack exchange,提问作者JEF
相关产品推荐
相关产品推荐

