簡體   English   中英

如何在 Django 模板中使用列表迭代字典作為值?

[英]How do I iterate dictionary with lists as values in Django template?

我有一個列表作為值的字典(截斷給你一個例子):

圖像文件:

for prop in context['results'][0]:
        imageFolderPath ='./media/uploaded/prop_images/' + prop.property_ID
        if os.path.isdir(imageFolderPath):
            imageFileList[prop.property_ID] = [f for f in listdir(imageFolderPath) if isfile(join(imageFolderPath, f))]
    

context['imageFiles'] = [imageFileList]

這是我直接在模板中打印時顯示的內容:

[{'R01': ['02secparking27.jpg', '10-2017-ff-detail-1200x627.jpg', '1200x820.jpg', '12539233_web1_180704-VMS-parking-lot.jpg', '16.12.01-519196006.jpg',], 
'R02': ['asdasd.jpg','12131asad.jpg','asdasdasd.jpg']}]

在模板中,我試圖通過迭代來訪問圖像名稱,但我沒有得到任何值。

{% for keys,values in imageFiles %}
   {% for x in values %}
     <p>  {{X}}  </p>
   {% endfor %}
{% endfor %}

出錯

“需要 2 個值才能在 for 循環中解壓;得到 9 個。”

我還按照其他帖子中的建議嘗試了 imageFiles.items ,但它似乎不起作用。

我究竟做錯了什么? 在這里絞盡腦汁。

所以,你正在傳遞:

context['imageFiles'] = [imageFileList]

這很令人困惑,沒有充分的理由。 你所說的imageFileList不是一個列表,而是一個字典。 然后,您傳遞給模板的是一個具有單個元素的列表,即該字典。

修復:傳入字典(如果您將imageFileList的名稱更改為不那么令人困惑的名稱會更好):

context['imageFiles'] = imageFileList

在您的模板中:

{% for key, value in imageFiles.items %} 
    {% for x in values %}
        <p>  {{x}}  </p>
    {% endfor %}
{% endfor %}

假定

dct = your input dictionary

代碼:

[value for keys, values in dct.items() for value in values]

將為您提供以下文件名列表:

['02secparking27.jpg',
 '10-2017-ff-detail-1200x627.jpg',
 '1200x820.jpg',
 '12539233_web1_180704-VMS-parking-lot.jpg',
 '16.12.01-519196006.jpg',
 'asdasd.jpg',
 '12131asad.jpg',
 'asdasdasd.jpg']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM