Структуры данных Python в структуры данных JS с использованием шаблонов Django (списки и дикты) - PullRequest
4 голосов
/ 03 марта 2012

У меня есть представление Django, которое возвращает список диктов, например, так:

data = [{'year': 2006, 'books': 54},
        {'year': 2007, 'books': 43},
        {'year': 2008, 'books': 41},
        {'year': 2009, 'books': 44},
        {'year': 2010, 'books': 35}]

c = {
    'data': data,
    }
return render(request, 'template.html', c)

Файл шаблона содержит базовый JavaScript, который выполняет что-то вроде этого.

var data = "{{data}}";
console.log(data);
//..... Then other functions

проблема заключается в том, что данные поступают в JavaScript через шаблон, отформатированный, как показано ниже с 'для кавычек.

{'books': 4, 'year': 2010}, {'books': 7, 'year': 2011}

Я попытался вывести список dicts в строку json в python, используя:

simplejson.dumps(data)

Но не радость.Любые предложения и идеи для исправления?Как люди получают структуры данных Python в структуры данных js, используя шаблоны django

Примечание. В идеале переменная данных js должна выглядеть следующим образом:

var data = [{year: 2006, books: 54},
        {year: 2007, books: 43},
        {year: 2008, books: 41},
        {year: 2009, books: 44},
        {year: 2010, books: 35}];

1 Ответ

8 голосов
/ 03 марта 2012

Это часть проекта django, направленная на то, чтобы пользовательские данные не попадали на выход без выхода. (XSS профилактика и прочее)

Чтобы обойти это, вы захотите использовать комбинацию json.dumps() (simplejson устарела в py> = 2.6), чтобы убедиться, что вывод является JS Safe, и var data = "{{ data|safe }}", чтобы явно сказать django, что не нужно бежать вывод этой переменной.

...