気ままなタンス*プログラミングなどのノートブック

プログラミングやRPGツクール、DTM等について、学んだことや備忘録をアウトプットとして残し、情報を必要としている誰かにとって「かゆいところに手が届く」ブログとなることを願いながら記事を書いています。

【Django】[template]htmlをエスケープせずそのまま出力する方法

スポンサーリンク

Markdownの変換結果等、エスケープせずそのまま出力したいケースがある

  • 対応方法は2つある
    • {% autoescape off %} {% endautoescape %}で囲んだ部分にhtmlを指定する
    • safeフィルタを利用する

Django テンプレート言語 — Django v1.0 documentation

1: {% autoescape off %} {% endautoescape %}で囲んだ部分にhtmlを指定する

<!-- any_template.html -->
{% autoescape off %}
{{ markdown_result }}
<div>divタグ</div>
<b>ボールド</b>
{% endautoescape %}

2: safeフィルタを利用する

<!-- any_template.html -->
{{ markdown_result|safe }}

感想

  • safeっていうフィルタ名を見て、勝手に「escapeを目的としたテンプレートフィルタ」だと思ってしまっていた。思い込みって怖い
  • autoescape offは前にもどこかでやった気がする