Python 如何在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您的

我通过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
    您的列表:

    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 }}