46632


下記のコードのコードを実行すると、ブラウザ側ではこのように表示されてしまいます。  
[![ブラウザの表示](https://i.stack.imgur.com/SGvLW.png)](https://i.stack.imgur.com/SGvLW.png)  
下記のコードのdivを文字列ではなく、HTMLとして読み込ませるにはどうしたら良いのでしょうか。

ご回答頂けますと、幸いです。

[code]

    # 以上略
    @app.route('/')
    def index():
    
        div = '<div>test</div>'
    
    return render_template('index.html', div=div)
    # 以下略
    
[/code]


CC BY-SA 4.0
2018-07-15T10:17:54.937
46630
2018-07-15T10:48:59.920
29108
question
python flask
Flaskで変数を文字列ではなくHTMLのタグとして読み込ませたい


[Passing HTML to template using
Flask/Jinja2](https://stackoverflow.com/questions/3206344/passing-html-to-
template-using-flask-jinja2)に同様の質問がありました。  
また、[Flask
メモ](https://qiita.com/Prismo/items/7bfd6cd3b4b651b6094f)に参考となるコードがありました。

方法は2つあるそうです。

  1. MarkupSafe.Markupを使い変数をsafeにする
  2. テンプレート内で `|safe`フィルターを使い変数をsafeにする

## 1. MarkupSafe.Markupを使い変数をsafeにする

[code]

    from flask import Markup
    # 略
    
    @app.route('/')
    def index():
        div = Markup('<div>test</div>') # divはエスケープ不要なsafeとして扱われる
        return render_template('index.html', div=div)
    
[/code]

## テンプレート内で |safeフィルターを使い変数をsafeにする

テンプレート内で、div変数を `|safe`フィルターを使いsafeにする。

[code]

    <body>
      {{ div | safe }}
    </body>
    
[/code]


CC BY-SA 4.0
2018-07-15T10:48:59.920
46632
2018-07-15T10:48:59.920
46630
answer