views.py
、時系列データを次のように辞書に保存しています。
time_series = {"timestamp1": occurrences, "timestamp2": occurrences}
ここで、各timestamp
はUNIX時間であり、occurrences
は整数です。
render
関数のコンテキストで時系列データをjsonオブジェクトとして渡す方法はありますか?
これを行う理由:フロントエンドで Cal-heatmap を使用していますが、json形式のデータが必要です。今のところ、Ajaxリクエストは問題なく機能しますが、できればrender
アプローチを使用したいのですが。
フロントエンドライブラリでJSONを解析する必要がある場合は、json
ライブラリを使用してpython dictをJSONの有効な文字列に変換します。escapejs
フィルターを使用します
import json
def foo(request):
json_string = json.dumps(<time_series>)
render(request, "foo.html", {'time_series_json_string': json_string})
<script>
var jsonObject = JSON.parse('{{ time_series_json_string | escapejs }}');
</script>
json.dumps(time_series)
のようなものをレンダー関数に渡してみましたか?
json.dumps
値をテンプレートに。すでに有効なJSON文字列なので、解析する必要はありません。テンプレートでレンダリングする場合のみ、HTMLの引用を防ぐためにsafe
としてマークしてください。
# views.py
def foo(request):
time_series_json = json.dumps(time_series)
return render(request,
"template.html",
context={'time_series': time_series_json})
# in the template
<script>
const timeSeries = {{ time_series | safe }};
</script>