flaskでアプリを作っているとアプリ内で生成したタグをHTML側で文字列ではなく、HTMLとして読み込ませたいときがあります。
from flask import Flask, render_template import pandas as pd app = Flask(__name__) df = pd.DataFrame([[1,'山田'],[2,'山下'],[3,'山本']]) @app.route('/') def index(): table = df.to_html(classes='table') return render_template('test.html', table=table) if __name__ == "__main__": app.run(debug=True)
<test.html>
<html><h1>テーブルの中身</h1>{{ table }}</html>
<実行結果>
Flaskで変数を文字列ではなくHTMLのタグとして読み込む
結論からいくとhtmlのテンプレート内で、変数に |safeフィルターを使ってあげるとよいです。
{{ table }}→{{ table | safe }}
<test.html>
<html><h1>テーブルの中身</h1>{{ table | safe }}</html>
<実行結果>
テーブルタグが文字列としてHTMLとして認識されていることがわかります
関連記事:FlaskによるWebアプリ開発⑧~csvファイルアップロード機能を実装する
コメント