Python 如何在jinja模板上建立索引?
我通过python文件将3个列表传递给我的jinja模板Python 如何在jinja模板上建立索引?,python,jinja2,Python,Jinja2,我通过python文件将3个列表传递给我的jinja模板 list1 = [1,2,3,4] list2 = ['a','b','c','d'] list3 = [5,6,7,8] 所有这些值都相互对应,因此1与“a”和5匹配,2与“b”和6匹配,以此类推 在我的模板中,我将它们打印在同一行上。 如何进行数字索引以将其打印出来? 因此 我只知道通过循环直接访问对象,就像 {%for item in list%} {{item}} 两种方式: 在调用Jinja的代码中,只需zip您的
list1 = [1,2,3,4]
list2 = ['a','b','c','d']
list3 = [5,6,7,8]
所有这些值都相互对应,因此1与“a”和5匹配,2与“b”和6匹配,以此类推
在我的模板中,我将它们打印在同一行上。
如何进行数字索引以将其打印出来?
因此
我只知道通过循环直接访问对象,就像
{%for item in list%}
{{item}}
两种方式:
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的
loop.index0
功能(返回循环的当前索引,从0开始(loop.index
做同样的事情,从1开始)
例如:
{% for item in list1 %}
{{ item }}
{{ list2[loop.index0] }}
{{ list3[loop.index0] }}
{% endfor %}
这假设您的列表在设置模板之前都被断言为相同长度,否则您将遇到问题。与@Sean Vieira answer类似,您可以压缩代码中的数据,然后在模板中对其进行索引。例如:
{% for item in list1 %}
{{ item }}
{{ list2[loop.index0] }}
{{ list3[loop.index0] }}
{% endfor %}
data=zip(列表1、列表2、列表3)
列表1值
列表2值
列表3值
{数据%中的行为%1}
{{行[0]}
{{行[1]}
{{行[2]}
{%endfor%}
您可以直接但间接地进行列表索引
首先,转换字符串形式的列表,然后传入jinja模板
在jinja模板中通过拆分将该字符串拆分为集合(类似于列表中的列表)
然后,您可以像在python列表中一样进行简单的索引
{% set list1 = variable1.split(',') %}
The grass is {{ list1[0] }} and the boat is {{ list1[1] }}
或
使用
{%fori,item enumerate(l)%}
在视图中,可以执行zip(list1,list2,list3)
然后循环them@GrijeshChauhan我不认为你可以在jina2中进行枚举。我得到的错误不是这样的defined@bernie2436我注释的代码在中缺少,对于语法,corected应该是{%fori,item in enumerate(l)%}
。但我不知道Jina.loop.index0和loop.index之间的区别是什么?为什么是拆分字符“;”当元组以“,”分隔时?噢!,我忘了更改它。感谢您注意到这一点
<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>
{% set list1 = variable1.split(',') %}
The grass is {{ list1[0] }} and the boat is {{ list1[1] }}
{% set list1 = variable1.split(',') %}
{% for item in list1 %}
<p>{{ item }}<p/>
{% endfor %}
{% set item1, item2 = variable1.split(',') %}
The grass is {{ item1 }} and the boat is {{ item2 }}