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

プログラミングやRPGツクール、DTM、VOCALOIDについてのんびり書きます。

【メモ】Djangoで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は前にもどこかでやった気がする