Я вытягиваю ряд URL изображения и их соответствующих заголовков. Я попытался создать хеш или ассоциативный массив, но данные, кажется, перезаписывают так, я только заканчиваю с последним объектом в массиве.
Например;
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)
Вам нужен dict, который является ассоциативной структурой данных Python, тогда как вы создаете список.
Но я не уверен, что понимаю вашу проблему. Почему бы просто не передать коллекцию media
в шаблон и не выполнить итерацию следующим образом:
{% for file in media %}
<a href="{{ file.url }}">{{ file.title }}</a>
{% endfor %}
EDIT
Основываясь на вашем комментарии, я предполагаю, что вы ищете что-то вроде этого:
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))