I'm dumping JSON in Django view and then parsing JSON in JS to get the data.
My view.py (Django)
ibms = []
for i in range(2, 5):
ibm = Mapa(i, wsMapa)
ibms.append(ibm.__dict__)
ibms = json.dumps(ibms)
return render(request, 'mapas/index.html', {'ibms': ibms})
The ibm
variable output in Django template is:
[{"numeroIbm": "AUTO P"}, {"numeroIbm": "PTB"}, {"numeroIbm": "FAROL"}]
My index.html (JS inside)
{{ ibms|json_script:"ibms" }}
<script>
const mydata = JSON.parse(document.getElementById("ibms").textContent);
const mydata2 = JSON.parse(mydata);
</script>
The issue is: I'm having to JSON.parse
double times to get the JS object. The variable mydata
, despite the JSON.parse
, is string typeof. I only get the final result when I JSON.parse
for the second time (mydata2
).
What is happening, pls?
Tks in advance!
CodePudding user response:
You should not dump it in the view, so:
ibms = [Mapa(i, wsMapa).__dict__ for i in range(2, 5)]
return render(request, 'mapas/index.html', {'ibms': ibms})
and thus parse it as:
{{ ibms|json_script:"ibms" }}
<script>
const mydata = JSON.parse(document.getElementById("ibms").textContent);
// no second parse
</script>