Есть замечательная библиотека js — Highcharts. Я пытаюсь связать его с Django, и все действительно работает, но не тогда, когда я пытаюсь вставить переменную с содержимым в данные. Вот код.
Эта функция возвращает то, что я подставляю в данные в Highcharts.
def get_series(context):
data_ser = []
for i in context:
if i in ['One', "Two", "Three", "Four", "Five"]:
data_ser.append({
'name': i,
'y': context[i],
'z': 22.2
})
data_ser = json.dumps(data_ser)
return data_ser
А это сам код jquery:
<script>
$(document).ready(function () {
var data_ser = '{{ data_ser|safe }}'
console.info(data_ser)
Highcharts.chart('container', {
chart: {
type: 'variablepie'
},
title: {
text: 'Stats'
},
series: [{
minPointSize: 10,
innerSize: '20%',
zMin: 0,
name: 'countries',
data: data_ser
}]
});
})
</script>
Серийно в data пытаюсь подставить data_ser, но график не выводится. Хотя, если прописать вручную, то все будет работать.
Аналогичный код работает:
<script>
$(document).ready(function () {
var data_ser = '{{ data_ser|safe }}'
console.info(data_ser)
Highcharts.chart('container', {
chart: {
type: 'variablepie'
},
title: {
text: 'Stats'
},
series: [{
minPointSize: 10,
innerSize: '20%',
zMin: 0,
name: 'countries',
data: [
{
"name": "One",
"y": 50.0,
"z": 22.2
}]
}]
});
})
</script>
Очень надеюсь на помощь. Или дайте хотя бы альтернативные библиотеки js с графиками, где это будет работать.
Похоже, проблема в том, что data_ser
— это строка, представляющая объект JavaScript, но она обрабатывается как строка в свойстве данных объекта серии.
Попробуйте с:
<script>
...
var data_ser = JSON.parse('{{ data_ser|safe }}')
...
</script>
Большое спасибо. Должно быть, это было слишком просто. Похоже пора изучать JS