レンダリングしたい補完的なデータを持つ同じ長さの 2 つのリスト オブジェクトがあります。つまり、両方を同時にレンダリングする方法はありますか。
{% for i,j in table, total %}
{{ i }}
{{ j }}
{% endfor %}
または似たようなものですか?
レンダリングしたい補完的なデータを持つ同じ長さの 2 つのリスト オブジェクトがあります。つまり、両方を同時にレンダリングする方法はありますか。
{% for i,j in table, total %}
{{ i }}
{{ j }}
{% endfor %}
または似たようなものですか?
両方のリストの長さが同じである場合はzipped_data = zip(table, total)
、ビューのテンプレートコンテキストとして返すことができます。これにより、2値のタプルのリストが生成されます。
例:
>>> lst1 = ['a', 'b', 'c']
>>> lst2 = [1, 2, 3]
>>> zip(lst1, lst2)
[('a', 1), ('b', 2), ('c', 3)]
テンプレートに、次のように記述できます。
{% for i, j in zipped_data %}
{{ i }}, {{ j }}
{% endfor %}
また、ここでfor
テンプレートタグに関するDjangoのドキュメントを参照してください。それはあなたがそれを使うために持っているすべての可能性を素晴らしい例を含めて述べています。
Pythonのzip関数を使用して、2つのリストを一緒に圧縮します。
あなたの見解では:
zip(table, list)
テンプレートでは、これを単純なリストのように繰り返し、.0プロパティと.1プロパティを使用して、それぞれテーブルとリストのデータにアクセスできます。
それが単なる変数i
でありj
、あなたが見ているのであれば、これはうまくいくはずです-
return render_to_response('results.html',
{'data': zip(table, list)})
{% for i, j in data %}
<tr>
<td> {{ i }}: </td> <td> {{ j }} </td>
</tr>
{% endfor %}
(この質問に答えてくれた他のすべての人に感謝します)
ビューでこれを行う必要があります-組み込みのzip関数を使用してタプルのリストを作成し、テンプレートでそれを繰り返し処理します。
テンプレートロジックは意図的に単純であり、少しでも複雑なものはすべてビューで実行する必要があります。
ディクショナリを使用するのではなく (ソートを保証しません)、zip
2 つのリストで python 関数を使用して、それをテンプレートに渡します。