繁体   English   中英

使用jinja2烧瓶迭代的下一个列表

[英]Nexted list iterating using jinja2 flask

我有3list来自烧瓶,其中包含“名称”,“部门”,“位置”,我需要创建一个表并使用所有3list污染行。

**问题我无法一次访问所有3list数据

所以我读了StackOverflow的某个地方,将列表链接到字典,并将字典链接到列表

an_item = dict(name=names, department= departments, position=positions)
itema.append(an_item)

**如果名称是字符串而不是列表,则可以正常工作

瓶身侧面:

names = ["Alice", "Mike", ...]
department = ["CS", "MATHS", ... ]
position = ["HEAD", "CR", ....]

an_item = dict(name=names, department= departments, position=positions)
itema.append(an_item)

HTML:

<tbody>

   {% for item in items %}
   <tr>
       <td>{{item.name}}</td> #printing the list ["alice", "mike", ...]
       <td>{{item.department}}</td>
       <td>{{item.position}}</td>
   </tr>
   {% endfor %}
</tbody>

我想要一个简单的名称部门和职位表

Name  Department Position
Alice CS         Head
Mike  MATHS      CR

这是因为您错误地构建了词典。 当您做dict(name=names, department= departments, position=positions) ,这实际上只是创建一个具有名称列表值的名称密钥和一个具有部门列表的部门密钥。 这意味着item.name实际上是所有名称的列表。

我想您想要的是每个名称部门位置的词典列表。 这样做的方法是遍历并行列表,然后为每个索引创建一个字典并追加到列表中。

names = ['joe', 'alice', 'bill']
departments = ['CS', 'Math', 'Eng']
position = ['HEAD', 'CR', 'PROF']

items = []
for i in range(len(names)):
    item = dict(name=name[i], department=departments[i], position=positions[i])
    items.append(item)

print(items) # [{'name': 'joe', 'deparment': 'CS', 'position': 'HEAD}, {'name': 'alice', 'department': 'Math',...}...]

然后在HTML中,您将要使用方括号运算符或.get()

<tbody>

   {% for item in items %}
   <tr>
       <td>{{item['name']}}</td>
       <td>{{item['department']}}</td>
       <td>{{item['position']}}</td>
   </tr>
   {% endfor %}
</tbody>

这应该给您您要查找的表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM