users
say ["Sam", "Bob", "Joe"]
のリストがある場合は、jinjaテンプレートファイルで出力できる場所で何かを実行します。
{% for user in userlist %}
<a href="/profile/{{ user }}/">{{ user }}</a>
{% if !loop.last %}
,
{% endif %}
{% endfor %}
出力テンプレートを次のようにしたい:
Sam, Bob, Joe
上記のコードを試して、ループの最後の反復にあるかどうかを確認し、そうでない場合はコンマを挿入しませんが、機能しません。どうすればいいですか?
if
チェックを次のようにします。
{% if not loop.last %}
,
{% endif %}
If式 を使用してコードを短縮することもできます。
{{ "," if not loop.last }}
組み込みの「結合」フィルターを使用することもできます( http://jinja.pocoo.org/docs/templates/#join このように:
{{ users|join(', ') }}
http://jinja.pocoo.org/docs/dev/templates/#joiner からjoiner
を使用する
{% set comma = joiner(",") %}
{% for user in userlist %}
{{ comma() }}<a href="/profile/{{ user }}/">{{ user }}</a>
{% endfor %}
この正確な目的のために作られました。通常、単一のリストではforloop.lastの結合またはチェックで十分ですが、複数のグループの場合は便利です。
なぜ使用するかについてのより複雑な例。
{% set pipe = joiner("|") %}
{% if categories %} {{ pipe() }}
Categories: {{ categories|join(", ") }}
{% endif %}
{% if author %} {{ pipe() }}
Author: {{ author() }}
{% endif %}
{% if can_edit %} {{ pipe() }}
<a href="?action=edit">Edit</a>
{% endif %}