Как передать словарь в шаблон Django с помощью JavaScript - PullRequest
2 голосов
/ 18 июня 2019

Я пытаюсь передать значения словаря в шаблон django через JavaScript

Views.py

population_count = (
    {'name': 'Year 1800', 'data': '[107, 31, 635, 203, 2]'},
    {'name': 'Year 1900', 'data': '[133, 156, 947, 408, 6]'},
    {'name': 'Year 2012', 'data': '[1052, 954, 4250, 740, 38]'},
)
population_count_js = json.dumps(population_count)

jsonstring

return render(request, 'index.html', {'data': population_country_js},{'count': population_count_js})

Но я получаю сообщение об ошибке типа "Uncaught SyntaxError: Неожиданный конец ввода JSON в JSON.parse () в (index): 17"

  var b = '{{count|safe}}';

  console.log(JSON.parse(b))

index.html

<script>
    var a = '{{data|safe }}';

    console.log(JSON.parse(a))

    var b = '{{count|safe}}';

    console.log(JSON.parse(b))


    Highcharts.chart('container', {
        chart: {
            type: 'column'
        },
        title: {
            text: 'Historic World Population by Region'
        },
        xAxis: {
            categories: JSON.parse(a)
        },
        series: JSON.parse(b)
    });
</script>

I, за исключением вывода на диаграмме

Uncaught SyntaxError: Неожиданный конец ввода JSON в JSON.parse () в (index): 17

1 Ответ

0 голосов
/ 18 июня 2019

Это не относится к делу. Я обновлю свой ответ, когда станет известно больше о том, что на самом деле пытается анализировать OP на внешнем интерфейсе. Что более вероятно, так это то, что строка JSON в OP искажается где-то по пути к JSON.parse(...) и отсутствует некоторая часть действительного объекта JSON.

population_count = [
    {'name': 'Year 1800', 'data': '[107, 31, 635, 203, 2]'},
    {'name': 'Year 1900', 'data': '[133, 156, 947, 408, 6]'},
    {'name': 'Year 2012', 'data': '[1052, 954, 4250, 740, 38]'}
]

Действительный JSON требует, чтобы не было запятых и парантезов.

import json

population_count = [
    {'name': 'Year 1800', 'data': '[107, 31, 635, 203, 2]'},
    {'name': 'Year 1900', 'data': '[133, 156, 947, 408, 6]'},
    {'name': 'Year 2012', 'data': '[1052, 954, 4250, 740, 38]'},
]
population_count_js = json.dumps(population_count)

print(population_count)

Результат выполнения в python 3.6.1 repl:

({'name': 'Year 1800', 'data': '[107, 31, 635, 203, 2]'}, {'name': 'Year 1900', 'data': '[133, 156, 947, 408, 6]'}, {'name': 'Year 2012', 'data': '[1052, 954, 4250, 740, 38]'})
...