我在STPL中使用嵌套循环时遇到问题。
以下是 template.tpl
的一部分 % for item in result:
<div class="form-group">
<label for="Label">{{''.join(item)}}</label><br>
<p>
% for item1 in result1:
{{''.join(item1)}}
% end
</p><br>
<input type="text" class="form-control" name="q{{''.join(item)}}">
</div><br><br>
% end
问题是这部分代码会从元组 result1
返回所有元素% for item1 in result1:
{{''.join(item1)}}
% end
结果和 result1 是来自SQLite 3的数据的元组
我需要这样的东西:
...
<label>First element from tuple result</label>
<p>First element from tuple result1</p>
...
<label>Second element from tuple result</label>
<p>Second element from tuple result1</label>
...
...
有什么想法吗?:) 感谢。
答案 0 :(得分:1)
使用zip
构建一个2元组列表,将result
和result1
中的相应项目压缩在一起:
>>> result = [1 ,2, 3]
>>> result1 = ['a', 'b', 'c']
>>> zip(result, result1)
[(1, 'a'), (2, 'b'), (3, 'c')]
您应该在视图中执行此操作,而不是在模板中执行此操作。从视图中,您只需返回一个包含2元组的新列表,我们称之为items
。在模板中,您只需要一个循环,并将2元组解压缩为单独的变量:
% for label, description in items:
<div class="form-group">
<label for="Label">{{''.join(label)}}</label><br>
<p>{{''.join(description)}}</p><br>
<input type="text" class="form-control" name="q{{''.join(label)}}">
</div><br><br>
% end