Массив Django или список производятся?

Я вытягиваю ряд 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)
5
задан Dominic Rodger 24 February 2010 в 09:35
поделиться

1 ответ

Вам нужен 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))
5
ответ дан 14 December 2019 в 19:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: