クッキーもぐもぐ

PC関係とか映画とかゲームとかの

Flask: pythonの変数をhtml(javascriptにも)わたす方法

目的

前回はpost通信によりhtmlからpython側に変数をわたした

今回はpythonで指定した変数を、htmlないしjavascriptにわたす方法をメモ

流れ python->htmlの場合

python側は以下にしてhtmlへ変数を渡す

return render_template(○○.html,変数名=渡したい中身)

html側は以下にしてpythonから受け取り、表示できる

<p>{{変数名}}</p>

シンプル

@app.route("/")
def hello():
    tmp = 1+2
    return render_template('test.html', result = tmp)
<p>結果は{{result}}です</p>

→「結果は3です」と表示される

流れ python->javascriptの場合

python側は同じ

return render_template(○○.html,変数名=渡したい中身)

html側はjavacript内で以下にして取り出す

var jsでの変数名 = {{ 変数名|tojson }};

ポイントは|tojsonを追加することでjson形式でpython<->jsのデータのやり取りを可能にしてるらしい

参考

javascript - pythonの変数をjavascriptで受け取るには? - スタック・オーバーフロー

例(Chart.js

実際にpythonで作った変数(リスト)をchart.jsの結果として流用した

chart.jsでdata : [x,x,x,x,・・・]と記述するところを

var result = {{ result|tojson }};
//略
data: result,

でリスト(配列?)のままデータ指定できた

 

まとめ

hmtl->pythonに引き続き、

python->html,js の渡す方法をメモ

今は

hmtl->python 計算->html,jsへ

としているけど、これが複雑な計算とか情報として蓄積したい場合は

hmtl->python ->DBへ格納、計算->DBから取り出す->html,js

みたいな感じになるんだろうね