Featured image of post 【プログラミング備忘録】Djangoのテンプレートでの配列操作(ループ/件数取得)について

【プログラミング備忘録】Djangoのテンプレートでの配列操作(ループ/件数取得)について

436文字

Templateでの配列操作

ループ処理

サーバーロジックで配列をレスポンスとして返した場合、テンプレート側でリスト表示したい事があると思います。

サーバー側
response = {
        'numbers': [1,2,3,4,5]
}
return render(request, 'list/index.html', response)

その場合は以下のように記述する事で配列をループ操作する事が可能になります。

Template側
<div>
      {% for user in users %}
        <p>Name:{{user.name}}</p>
        <p>Age:{{user.age}}</p>
      {% endfor %}
    </div>


配列の要素数

レスポンスに含まれる配列の要素数を取得したいケースもあると思います。
その場合、以下のようにlen関数を使って取得しがちです。

Template側
<p>Count:{{len(users)}}</p>


しかし、Djangoではエラーになってしまいます。

エラー
django.template.exceptions.TemplateSyntaxError: Could not parse the remainder: '(users)' from 'len(users)'

len関数はTemplate側では定義されていないので使う事が出来ません。

正しくは以下のように「{配列}|(パイプ)length」を利用して取得します。
AngulerJSのフィルターみたいな感じになりますね。

Template側
<p>Count:{{users|length}}</p>



無事に表示されましたね。