Djangoのテンプレートでタプルの展開


Djangoのテンプレートでタプルを使うには若干のコツが入ります。



次のタプルを例にします。



links = (
('Google', 'http://www.google.co.jp'),
('Yahoo', 'http://www.yahoo.co.jp'),
)


通常のPythonスクリプトであれば



for link in links:
print "<a href='" + link[1] + "'>" + link[0] + "</a>"

とすれば、



<a href='http://www.google.co.jp'>Google</a>
<a href='http://www.yahoo.c.jp'>Yahoo</a>

と出力されますが、



Django内のテンプレートでは以下のようにタプルの展開をして各要素にアクセスする必要があります。



{% for link in links %}
<a href='{{ link.1 }}'>{{ link.0 }}</a>

と、括弧で囲むのではなく、ドットのあとに数字をつけてアクセスします。



参考: Tuple unpacking in django templates