Django {{ 〇〇 |safe }}とは
久しぶりのDjango記事。
Djangoに関しては、基礎的なところはかなり網羅したと思っていましたが、細かいところが漏れていたりしますね。
もちろん、まだまだ使いこなすっていう領域までには到達してないんですけど。
さて、本題の「{{ 〇〇 |safe }}」なんですが、私は、Djangoの中にfoliumを使って、leafletの地図を出したいなぁと思って、調べているうちに出会いました。
|safeはHTMLタグを描き出せるようにするためのフィルター機能。
通常、{{ 〇〇 }}の中にHTMLタグを埋め込んでもただのテキストとして表示されてしまう。
そこで、タグとして表示させたい時には{{ 〇〇 |safe }}とする。
例として、<h1>hello</h1>を表示させてみる
templateのhtmlが以下のようだったとして、
<body class="container">
{{title}}
{{title|safe}}
</body>
そして、pythonのファイルは以下、
def index(request):
params = {
'title':'<h1>hello</h1>'
}
return render(request, 'hello/index.html', params)
すると、{{title}}のほうが、htmlタグごと出力されますが、{{title|safe}}のほうは、ちゃんと文字が大きく表示されます。