2024-05-27 11:17:09 发布
网友
我将通过python文件向jinja模板传递3个列表。
list1 = [1,2,3,4] list2 = ['a','b','c','d'] list3 = [5,6,7,8]
所有这些值都对应,因此1与“a”和5匹配,2与“b”和6匹配,等等
在我的模板中,我将它们打印在同一行上。 如何进行数字索引以打印出来? 如此
1 a 5 2 b 6 3 c 7
我只知道通过循环直接访问对象
{%for item in list%} {{item}}
如果您真的需要索引,可以只循环一个变量,然后使用Jinja的loop.index0功能(返回从0开始的循环的当前索引(loop.index执行相同的操作,从1开始)
loop.index0
loop.index
例如:
{% for item in list1 %} {{ item }} {{ list2[loop.index0] }} {{ list3[loop.index0] }} {% endfor %}
这假设在设置模板之前,您的列表都被断言为相同的长度,否则您将遇到问题。
类似于@Sean Vieira answer,您可以压缩代码中的数据,然后将其索引到模板中。例如:
data = zip(list1, list2, list3)
<table> <tr> <td>list 1 value</td> <td>list 2 value</td> <td>list 3 value</td> <tr> {% for row in data %} <tr> <td>{{ row[0] }}</td> <td>{{ row[1] }}</td> <td>{{ row[2] }}</td> </tr> {% endfor %} </table>
两种方式:
在调用Jinja的代码中,只需zip列表:
zip
data = zip(list1, list2, list3) # data is now a list of tuples # [(1, 'a', 5), (2, 'b', 6), etc.]
然后,在模板中,您可以简单地循环嵌套行:
{# your_template.jinja #} <table> {% for row in data %} <tr> {% for cell in row %} <td>{{ cell }}</td> {% endfor %} </tr> {% endfor %} </table>
作为替代,如果您只想使用Jinja,可以使用特殊的^{} variable:
<table> {% for cell in list1 %} <tr> <td>{{ list1[loop.index0] }}</td> <td>{{ list2[loop.index0] }}</td> <td>{{ list3[loop.index0] }}</td> </tr> {% endfor %} </table>
如果您真的需要索引,可以只循环一个变量,然后使用Jinja的
loop.index0
功能(返回从0开始的循环的当前索引(loop.index
执行相同的操作,从1开始)例如:
这假设在设置模板之前,您的列表都被断言为相同的长度,否则您将遇到问题。
类似于@Sean Vieira answer,您可以压缩代码中的数据,然后将其索引到模板中。例如:
data = zip(list1, list2, list3)
两种方式:
在调用Jinja的代码中,只需
zip
列表:然后,在模板中,您可以简单地循环嵌套行:
作为替代,如果您只想使用Jinja,可以使用特殊的^{} variable :
相关问题 更多 >
编程相关推荐