我通过我的python文件将3个列表传递给我的jinja模板.
list1 = [1,2,3,4]
list2 = ['a','b','c','d']
list3 = [5,6,7,8]
Run Code Online (Sandbox Code Playgroud)
所有这些值都是相互对应的,因此1匹配'a'和5,2与'b'和6匹配等.
在我的模板中,我将它们打印在同一行上.如何进行数字索引打印出来?就是这样
1 a 5
2 b 6
3 c 7
Run Code Online (Sandbox Code Playgroud)
我唯一知道的是通过循环直接访问对象
{%for item in list%}
{{item}}
Run Code Online (Sandbox Code Playgroud)
Que*_*lan 22
如果你真的想要索引,你可以循环其中一个变量,然后使用Jinja的loop.index0功能(返回从0开始的循环的当前索引(loop.index同样的事情,从1开始)
例如:
{% for item in list1 %}
{{ item }}
{{ list2[loop.index0] }}
{{ list3[loop.index0] }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
这假设您的列表在设置模板之前都被声明为相同的长度,或者您将遇到问题.
两种方式:
在您的代码中只调用Jinja zip的列表:
data = zip(list1, list2, list3)
# data is now a list of tuples
# [(1, 'a', 5), (2, 'b', 6), etc.]
Run Code Online (Sandbox Code Playgroud)
然后,在您的模板中,您可以简单地循环嵌套行:
{# your_template.jinja #}
<table>
{% for row in data %}
<tr>
{% for cell in row %}
<td>{{ cell }}</td>
{% endfor %}
</tr>
{% endfor %}
</table>
Run Code Online (Sandbox Code Playgroud)作为替代,如果您只想使用Jinja,您可以使用特殊loop变量:
<table>
{% for cell in list1 %}
<tr>
<td>{{ list1[loop.index0] }}</td>
<td>{{ list2[loop.index0] }}</td>
<td>{{ list3[loop.index0] }}</td>
</tr>
{% endfor %}
</table>
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
35261 次 |
| 最近记录: |