2010-02-24 46 views
5

我正在拉一組圖像URL和它們各自的標題。我試着創建一個散列或關聯數組,但數據似乎覆蓋,所以我只能結束數組中的最後一項。Django數組或列表輸出?

例如;

thumbnail_list = [] 
for file in media: 
    thumbnail_list['url'] = file.url 
    thumbnail_list['title'] = file.title 

我甚至試過創建兩個列表並將它們放在一個較大的列表中。

thumbnail_list.append('foo') 
thumbnail_urls.append('bar') 
all_thumbs = [thumbnail_list], [thumbnail_urls] 

我試圖創造出這個數據的鏈接:

<a href="image-url">image title</a> 

我不斷收到接近,但我結束了在一次上循環太多的數據或全部數據的我Django模板。

想法?

編輯:也許zip()是我需要的?

questions = ['name', 'quest', 'favorite color'] 
answers = ['lancelot', 'the holy grail', 'blue'] 
for q, a in zip(questions, answers): 
    print 'What is your {0}? It is {1}.'.format(q, a) 

回答

5

你想要一個dict,這是Python的關聯數據結構,而你正在創建一個列表。

但我不確定我是否理解你的問題。爲什麼不通過你的media收集到模板並重復這樣的:

{% for file in media %} 
    <a href="{{ file.url }}">{{ file.title }}</a> 
{% endfor %} 

編輯

基於您的評論,我現在相信你正在尋找的東西是這樣的:

thumbnail_list = [] 
for file in media: 
    file_info = {} 
    file_info['url'] = file.url 
    file_info['title'] = file.title 
    thumbnail_list.append(file_info) 

{% for file in thumbnail_list %} 
    <a href="{{ file.url }}">{{ file.title }}</a> 
{% endfor %} 

您可以創建一個列表,然後對每個文件,在處理URL,標題或其他內容後,將字典附加到該列表中。

或者,你可以創建自己的類封裝的情況下,這是一個好一點,你還有其他的邏輯適用於:

class FileInfo(object): 
    def __init__(self, file): 
     self.url = file.url # do whatever 
     self.title = file.title # do whatever 

thumbnail_list = [] 
for file in media: 
    thumbnail_list.append(FileInfo(file)) 
+0

嗨喬 - 我需要做一個字符串替換上的網址,也沒有輸出任何沒有標題的圖像。所以我只能在python方面做到這一點,對嗎? – Shu 2010-02-24 00:12:15

+0

UGH!我應該早點看到這一點。非常感謝!該類FileInfo是否必須返回任何內容,或者我可以按原樣調用它?例如。;迴歸自我; – Shu 2010-02-25 00:13:29

+0

'__init__'方法是Python構造函數,它不需要返回任何東西,因爲它的返回值隱含爲新對象。 'file_info = FileInfo(...)' – 2010-02-25 01:46:18