DjangoでJSON受け渡し
- 2021.01.13
- Python
前回、前々回とDjangoに関する記事を載せましたが、カスタムフィルタでのJSONの受け渡しに少し苦戦したので、記録として残しておきたいと思います。
カスタムフィルタ
カスタムフィルタ側はとりあえず受け取った値を含んだJSONデータを成形して返すというものになっています。データはmark_safeという関数を通していますが、これがないまま受け渡ししようとしてずっとうまくいきませんでした。Django側で用意されている関数は色々あるようですが、いつ何を使えばいいのか良く分からないのが不便です。
1 2 3 4 5 6 7 8 9 10 |
from django import template import json from django.utils.safestring import mark_safe register=template.Library() @register.filter def data_json(value): data = {'x': 100, 'y': 200, 'z': 300, 'test':value.split(",")} return mark_safe(json.dumps(data)) |
テンプレート
テンプレートではJavascriptを使ってカスタムフィルタを呼び出して値を受け取っています。値は配列もしっかり取得できます。
1 2 3 4 5 6 |
<script type="text/javascript"> var data_json={{"v1,v2"|data_json}}; for (var i in data_json.test){ console.log(data_json.test[i]); } </script> |
上記でhtmlにアクセスするとコンソールにv1, v2が出力されます。
これで、javascriptでは面倒な処理もpythonのライブラリを駆使して出来るようになりました。
-
前の記事
Djangoアプリを作る(html, css,カスタムフィルタ) 2021.01.10
-
次の記事
styleGANで独自データを学習する 2021.05.16