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ファイルアップロード機能を実装する


コメント