6

一連の画像 URL とそれぞれのタイトルを取得しています。ハッシュまたは連想配列を作成しようとしましたが、データが上書きされているように見えるため、配列の最後の項目しか作成できません。

例えば;

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

2 つのリストを作成し、それらをより大きなリストに入れようとさえしました。

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)
4

1 に答える 1

5

リストを作成しているときに、Python の連想データ構造である dictが必要です。

しかし、あなたの問題を理解しているかどうかはわかりません。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))
于 2010-02-24T00:07:13.670 に答える