【Django】SQLに格納したHTMLをタグを含めそのまま出力する

【Django】SQLに格納したHTMLをタグを含めそのまま出力する

Laravelもそうでしたが、フレームワークではDBに格納された値は通常、テキストとして扱われ処理されます。
HTMLタグが入っていても、タグ自体をテキストとして読んで表記します。

これは、ウィルスなどの悪意あるスクリプトが格納されてしまったとしても(テキストとして取り出すことで)処理されない様にする仕組みになるので、とても重要で意味のある仕様です。

でも、CMSを作ろうとした時これは足かせになってきます。
と言う事で、HTMLタグを含めそのまま出力する方法です。

DBに格納したHTMLをタグをタグとしてそのまま出力する

#htmlテンプレート

{% autoescape off %}
{{ text }}
{% endautoescape %}

たったこれだけです。

autoescapeと言う関数が用意されてて、こいつがテキスト化したりを処理していてくれてたようです。
で、その機能をOFFにすればHTMLタグはタグとして出力されると。
何とも理解しやすい機能ですね。

まとめ

テーブルからのレコード抽出とHTMLをそのまま吐き出す機能が出来上がればCMSの基礎部分は殆ど完了です。

あとはデザイン的な部分とコンテンツの登録部分の実装だな。

\ 最新情報をチェック /

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください