2015-07-01 21 views
7

W views.py mam serii danych o czasie zapamiętanej w słowniku w następujący sposób:Django: przechodzącą JSON ze względu na szablonie

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

gdzie każdy timestamp w czasie UNIX i occurrences jest liczbą całkowitą.

Czy istnieje sposób przekazania danych szeregów czasowych jako obiektu json w kontekście funkcji render?

Dlaczego to: Używam Cal-heatmap na przednim końcu, który wymaga danych w formacie json. Żądania Ajax działają na razie dobrze, ale w miarę możliwości chciałbym użyć podejścia render.

Odpowiedz

15

Jeśli biblioteka frontend musi analizować JSON, można użyć biblioteki json, aby przekonwertować ducha Pythona na poprawny ciąg JSON. Użyj escapejs filtr

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> 
+1

Jak o 'var JSONObject = {{time_series_json_string}};'? Jeśli wiesz ** na pewno twoje dane nie mogą zawierać znaków ucieczkowych Unicode lub ciągu ' spectras

+0

@ Spectras rzeczywiście, dobry punkt w kontekście tego konkretnego pytania. Na wypadek, gdyby ten post został zinterpretowany dla innej ładowności, myślę: P –

+0

@ Yuji'Tomita'Tomita to działa świetnie! czy istnieje jakiś powód, aby wybrać to podejście w stosunku do podejścia do żądania ajaxowego lub odwrotnie, ogólnie? – jkarimi

2

Czy próbowałeś przekazać coś podobnego do json.dumps(time_series) do funkcji renderowania?