メインコンテンツまでスキップ

テンプレート構文:値の埋め込み

まずは、テンプレートで最も基本となる「値の埋め込み」と、それに付随する「フィルター」について解説します。

テンプレートでは {{ ... }} 構文を使用して、サーバー上で変数や式の評価結果を HTML に埋め込めます。

<p>{{ user.name }}</p>

上記の例では、user.name の値が展開され、次のような HTML が出力されます(仮に名前が Alice の場合)。

<p>Alice</p>

単なる変数だけではなく、演算・関数呼び出し・条件分岐など、自由な式を埋め込めます。

<p>{{ user.age + 1 }}</p>
<p>{{ user.is_active ? 'アクティブ' : '停止中' }}</p>

フィルター

{{ ... }} 内の出力に対しては、パイプ(|)記法で「フィルター」を適用できます。 フィルターは、出力内容の整形・変換・エスケープなどを行うための機能です。

<p>{{ user.bio | br }}</p>

複数のフィルターを連続して適用できます。

<p>{{ text | escape_html | br }}</p>

利用可能なフィルターは以下のとおりです。

フィルター名説明
debugオブジェクトや配列の中身を表示します。デバッグモード時のみ描画され、本番環境では出力されません。
rawエスケープ処理を行わず、値をそのまま出力します。XSS に注意が必要です。
br改行文字(\n)を <br> タグに変換します。
escape_urlURL エンコード(urlencode)を行います。
escape_htmlHTML エスケープ(<&&lt; などに変換)を行います。
escape_jsonJSON 文字列として安全に出力できるようエスケープします。
escape_jsJavaScript 文字列として安全に出力できるようエスケープします。
escape_cssCSS の値として安全に出力できるようエスケープします。

仕様・特徴

値の埋め込み構文には以下のような仕様・特徴があります。

自由な式が記述可能

{{ 1 + 2 }}{{ user?.name ?? 'ゲスト' }} のように、演算子や関数、三項演算子など自由に式を記述できます。

true, false, null は描画されない

論理値や null は自動的に空文字列に変換され、出力には現れません。

例: {{ null }} ⇒ (何も出力されない)

パイプ | によるフィルターの連結が可能

複数のフィルターを | で区切って順に適用できます。

式内での改行が可能

長い式や複雑なロジックは複数行に分けて記述できるので、可読性を保てます。

<p>
{{
user.comment
| escape_html
| br
}}
</p>