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
みたいな感じになるんだろうね