Djangoでwebアプリを作成しているときに出てきた{{○○|safe}}の意味がよくわかっていなかったので備忘録として周辺の知識と一緒に備忘録としてまとめておく。
|safeとは
Djangoのフィルター機能の一種。フィルター機能の話はこちらの記事にゆずるが、テンプレート側がビューから受け取った変数を加工するためのもの。
|safeの役割
safeの場合,受け取った変数に含まれているHTMLタグをエスケープさせずに処理してくれるようになる。例えば、変数にHTMLタグが含まれている場合、|safeがない場合はただの文字列として読み込んでしまうが、|safeをつけることでタグとして認識してくれる。
エスケープ(エスケープ処理)とは?
上でさらっと出てきたエスケープという言葉。何気なく使っているが、最近までどういう意味か説明できなかった。エスケープ処理なんて言葉もよく聞くが一体何のか。
どうやら、 エスケープ(処理)とはプログラム中で使用する特殊記号をただの文字列として扱いたいときに行う(処理) らしい。
先ほどのDjangoの話だと、ビューからテンプレートに変数を渡すとHTMLタグはエスケープ処理され、ただの文字列の一部として渡されたことになる。
逆に|safeはエスケープ処理を解除(エスケープを無効化)している。
参考文献
【Django】テンプレート:フィルターの一覧(使用方法、書き方)
Djangoの {{ 〇〇 |safe }}とは
エスケープ処理とは?