最近、 Jinja2 というテンプレート言語の勉強をしています。
あまり聞いたことのない名前だったのですが、公式を見ると近ごろ流行りの Instagram も Jinja2 を使っているらしいです。
…の割にはネット上に情報があんまりなかったりします。
Jinja2 には色んな機能があるのですが、この記事では便利な割に影の薄い loop という変数を紹介します。
例えば、こんな要件があったとします。
フロントだとありがちな要件ですが、このような時に loop が使えます。
loop は for 文の中で使うことが出来、以下の変数を使用できます。
最後のループ以外は
1番目 のフォームは削除の x ボタンを出さない、という処理が簡単に書けます。
さらに、渡された配列が事前にソートされていれば、番号も
他の言語だと、このような機能は見たことがありませんでした。
実際、今までは do-while 文なんかをつかって、結構無理矢理書いたりしてました。
こういう機能は知っているか知っていないかの世界なので、さっとかけると周りに差をつけられてドヤァの機会が増えますね。
あまり聞いたことのない名前だったのですが、公式を見ると近ごろ流行りの Instagram も Jinja2 を使っているらしいです。
…の割にはネット上に情報があんまりなかったりします。
Jinja2 には色んな機能があるのですが、この記事では便利な割に影の薄い loop という変数を紹介します。
例えば、こんな要件があったとします。
users = ['パンチョ', ピンチョ', おおしおへいはちろう']
という名前の入った配列が渡されるので、パンチョ、ピンチョ、おおしおへいはちろう
と表示する。フロントだとありがちな要件ですが、このような時に loop が使えます。
loop は for 文の中で使うことが出来、以下の変数を使用できます。
- loop.index : 現在、何回目のループかを返す
- loop.first : 初回のループなら True, そうでなければ False
- loop.last : 最後のループなら True, そうでなければ False
- length : ループの回数を返す
最後のループ以外は
loop.last が False なので、そこで分岐させます。{% for user in users %}
{{ user }}{% if not loop.last %}、{% endif %}
{% endfor %}
また loop.first を使うと、同じような編集フォームを出力しながら、1番目 のフォームは削除の x ボタンを出さない、という処理が簡単に書けます。
さらに、渡された配列が事前にソートされていれば、番号も
loop.index を使って表示することが出来ます。他の言語だと、このような機能は見たことがありませんでした。
実際、今までは do-while 文なんかをつかって、結構無理矢理書いたりしてました。
こういう機能は知っているか知っていないかの世界なので、さっとかけると周りに差をつけられてドヤァの機会が増えますね。

コメント
コメントを投稿