テンプレート構文:値の埋め込み
まずは、テンプレートで最も基本となる「値の埋め込み」と、それに付随する「フィルター」について解説します。
テンプレートでは {{ ... }}
構文を使用して、サーバー上で変数や式の評価結果を 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_url | URL エンコード(urlencode )を行います。 |
escape_html | HTML エスケープ(< や & を < などに変換)を行います。 |
escape_json | JSON 文字列として安全に出力できるようエスケープします。 |
escape_js | JavaScript 文字列として安全に出力できるようエスケープします。 |
escape_css | CSS の値として安全に出力できるようエスケープします。 |
仕様・特徴
値の埋め込み構文には以下のような仕様・特徴があります。
自由な式が記述可能
{{ 1 + 2 }}
や {{ user?.name ?? 'ゲスト' }}
のように、演算子や関数、三項演算子など自由に式を記述できます。
true
, false
, null
は描画されない
論理値や null
は自動的に空文字列に変換され、出力には現れません。
例: {{ null }}
⇒ (何も出力されない)
パイプ |
によるフィルターの連結が可能
複数のフィルターを |
で区切って順に適用できます。
式内での改行が可能
長い式や複雑なロジックは複数行に分けて記述できるので、可読性を保てます。
<p>
{{
user.comment
| escape_html
| br
}}
</p>