flaskでjinja2のline statementsを使う

jinja2のline statementsが便利。基本的にはflaskの下で使っています。

line statements?

行(line)をステートメントとして指定できる記述方法。

簡単にいうと、

{% for item in items %}
    <div>{{ item }}</div>
{% endfor %}

上の記述が、

# for item in items:
    <div>{{ item }}</div>
# endfor

これでも書けるということ。

flaskでの設定方法

jinja_optionsを利用します。line_statement_prefixで、行をステートメントとして指定する文字を指定して、line_comment_prefixでコメントアウトの文字列を指定できます。これによりline statementsの中でもコメントアウトできます。

app = Flask(__name__)
app.jinja_options = {
    # ...,
    'line_statement_prefix': '#',
    'line_comment_prefix': '##'
}

line statementsのドキュメントはこちら: Template Designer Documentation — Jinja Documentation (3.1.x)

flaskとjinja2、app.jinja_optionsなどの詳細は、下の記事にて。

flask+jinja2でのjinja2の設定を変更する
flaskとjinja2の環境変数というかオプションを指定して、テンプレートの出力の気になる空行を除去する。 環境 Flask==2.1.2 Jinja2==3.1.2 flask+jinja2のデフォルト設定 Template Desig...

jinja2での設定方法

jinja2.Environmentで指定すれば良さそうです。こちらではほとんど使ったことがないので、該当ドキュメント付近のリンクを貼っておきます: API — Jinja Documentation (3.1.x)

便利なところ

個人的に便利だと思う点を挙げておきます。

  • {% %}だとブロックを意識してしまうのでインデントが気になる
  • line statementsだとforやifの末尾に:を付けてもいい。python風に書ける
  • コメントを書くのが楽。{##}は面倒

上から順にありがたいなあと思って使っています。for item in items:と書けるのはとても直感的で使いやすいです。

インデントはループ外の兄弟要素とのインデントの差が気になる時はとても助かります。{% %}を使うとインデントしないとソースの見栄えが変で、かといって出力結果のインデントはズレてしまうのでなんとかしたいと思っていました。#なら個人的にはズレは気にならないです。

おわり

ドキュメントを眺めるのもいいものですね。英語だから若干読むのに疲れやすいのが難点。

また使いたいなと思ったものは記録していきたい所存です。

以上です。

コメント

タイトルとURLをコピーしました