所以本质上我遇到的问题是我不能两次遍历压缩列表。我试过两次复制压缩列表。
list = zip(vmarray, uuidarray)
这是代码视图部分中包含vm的列表的实例化。
def malware(request):
list, dictofvms = listofvms()
listcopy = iter(list)
list, listcopy = tee(listcopy)
malwarelist = listofmalware()
return render(request, 'malware.html', {"malwarelist": malwarelist, "list": list, "listcopy": listcopy})
这是将请求传输到实际网页的代码部分。
现在,当我遍历恶意软件列表时,在代码中访问它时。它只允许我循环遍历列表一次,因为它是压缩/迭代器。如果有任何方法可以循环使用那些非常棒的物品。 (必须有一些简单的东西)[我可能只是愚蠢]
{% for malware in malwarelist %}
{{ malware }}
{% for vm, uuid in list %}
{{ vm }}
{% endfor %}
{% for vm, uuid in listcopy %}
{{ vm }}
{% endfor %}
{% endfor %}
答案 0 :(得分:1)
好吧,您可以从迭代器创建一个列表,并仅将其传递给模板上下文:
def malware(request):
lst, dictofvms = listofvms()
lst = list(lst)
malwarelist = listofmalware()
return render(request, 'malware.html', {"malwarelist": malwarelist,
"lst": lst})
注意,我是如何避免使用list
作为列表名称而不影响从迭代器对象创建列表所需的内置列表函数。
答案 1 :(得分:1)
使用zip
的结果是zip object
而不是列表。一旦你遍历zip object
,它就会耗尽,你无法再次遍历它。
解决方法是将您的压缩对象转换为可以多次迭代的列表:
mylist = list(zip(vmarray, uuidarray))