jinja2 について
HTML、メール、設定ファイル、コード生成で Jinja2 を使う開発者向けの実践スキルです。環境の再利用、テンプレート構成、安全なレンダリングを扱います。
主な機能
- 01環境設定の再利用
- 02ファイル・パッケージ用ローダー
- 03テンプレート継承とカスタムフィルター
- 04自動エスケープとサンドボックス
- 05開発時の未定義変数チェック
活用シーン
- 01XSS リスクを抑えた HTML の描画
- 02テンプレート間でのレイアウト再利用
- 03信頼できないテンプレート定義への対応
- 04設定ファイルやコードの生成
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ microsoft/ debugpy --skill jinja2インストール後、Claude Code で/jinja2を入力して読み込まれたか確認します。
詳細
スキル:Jinja2
環境、フィルター、自動エスケープ、セキュリティなど、Jinja2でテンプレートをレンダリングする際のベストプラクティスです。
使用する場面
HTMLページ、メール、設定ファイル、コード生成など、Jinja2でテンプレートをレンダリングするときにこのスキルを適用します。
環境
jinja2.Environment(loader=..., autoescape=...)を一度作成し、再利用します。- ファイルベースのテンプレートには
FileSystemLoaderを、インストール済みパッケージにはPackageLoaderを使用します。 - XSSを防ぐため、HTMLテンプレートでは
autoescape=Trueを有効にします。
テンプレート
- 出力には
{{ variable }}を、制御フローには{% if/for/block %}を使用します。 - レイアウトを再利用するには、テンプレート継承(
{% extends 'base.html' %})を使用します。 - 再利用可能な変換処理には、カスタムフィルターを定義します。
セキュリティ
- HTMLをレンダリングする際は、必ず
autoescape=Trueを有効にします。 - 信頼できないテンプレートには
SandboxedEnvironmentを使用します。 - ユーザー入力をテンプレートコードとしてレンダリングせず、テンプレートデータとしてのみ扱います。
- 自動エスケープが無効な場合は、
|eフィルターを明示的に使用します。
注意点
Template(string)を直接使用しないでください。環境のローダーと設定を迂回してしまいます。- 未定義変数のエラーに注意してください。開発中は
undefined=StrictUndefinedを使用します。 - テンプレート内の複雑なロジックは避け、表示に専念させます。
コメント
Markdown 対応