Search code examples
javascriptjsondjangodjango-1.7cal-heatmap

Django: passing JSON from view to template


In views.py, I have time series data stored in a dictionary as follows:

time_series = {"timestamp1": occurrences, "timestamp2": occurrences}

where each timestamp is in unix time and occurrences is an integer.

Is there a way to pass the time series data as a json object in the context of the render function?

Why do this: I am using Cal-heatmap on the front end which requires the data to be in json format. Ajax requests work just fine for now but I ideally would like to use the render approach if possible.


Solution

  • If a frontend library needs a to parse JSON, you can use the json library to convert a python dict to a JSON valid string. Use the escapejs filter

    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>