Dans views.py
, les données de séries chronologiques stockées dans un dictionnaire sont les suivantes:
time_series = {"timestamp1": occurrences, "timestamp2": occurrences}
où chaque timestamp
est en heure unix et occurrences
est un entier.
Existe-t-il un moyen de transmettre les données de série temporelle sous forme d'objet json dans le contexte de la fonction render
?
Pourquoi faire ceci: J'utilise Cal-heatmap sur le frontal qui nécessite que les données soient au format json. Les requêtes Ajax fonctionnent parfaitement pour l'instant, mais je souhaiterais idéalement utiliser l'approche render
si possible.
Si une bibliothèque frontale nécessite un analyseur JSON, vous pouvez utiliser la bibliothèque json
pour convertir un dict python en une chaîne valide JSON. Utilisez le filtre 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>
avez-vous essayé de passer quelque chose comme json.dumps(time_series)
à la fonction de rendu?
Passez une valeur json.dumps
au modèle. C'est déjà une chaîne JSON valide, vous n'avez donc pas besoin de l'analyser ou quoi que ce soit. Ne le marquez que lorsque vous le rendez dans le modèle, comme suit: safe
pour éviter les citations HTML.
# 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>