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)
1 个回答
5
你想要的是一个字典,这是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))