2017-08-02 5 views
0

本質的に私が持っている問題は、私はZIPされたリストを2回反復することができないということです。私はzipされたリストを2回コピーしようとしました。Django、Zipされたリストをループする2回

これは、コードのビュー部分の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}) 

これは、リクエストを実際のウェブページに送信するコードの一部です。

私がマルウェアリストをループするときに、コードにアクセスするとき。それは私がリストを一度ループすることを許しています。それは、ジップ/イテレータであるためです。私が幻想的なアイテムをループする方法があれば。

def malware(request): 
    lst, dictofvms = listofvms() 
    lst = list(lst) 
    malwarelist = listofmalware() 
    return render(request, 'malware.html', {"malwarelist": malwarelist, 
              "lst": lst}) 

:[私はおそらくちょうど愚かなことだ]

{% for malware in malwarelist %} 
{{ malware }} 

     {% for vm, uuid in list %} 
      {{ vm }} 
    {% endfor %} 



      {% for vm, uuid in listcopy %} 
     {{ vm }} 
    {% endfor %} 






    {% endfor %} 

答えて

1

さて、あなたはイテレータから単一のリストを作成して、テンプレートのコンテキストにのみそれを渡すことができます(簡単な何かがなければなりません)注目すべきは、リストの名前をlistとして避けて、イテレータオブジェクトからリストを作成するのに必要なビルトインリスト関数をシャドーしないようにする方法です。

+0

おかげモーセはあなたがスターです! – dipl0

0

zipの結果はzip objectであり、リストではありません。 zip objectを反復処理すると、その処理が完了し、再度繰り返すことはできません。

これを解決するには、このようなように、複数回にわたり反復することができ、リストにあなたのzip形式のオブジェクトを変換することです:

mylist = list(zip(vmarray, uuidarray))

関連する問題