Как передать массив в Django в шаблон и использовать его с JavaScript - PullRequest
34 голосов
/ 11 апреля 2009

Я хочу передать массив в шаблон, а затем использовать его через JavaScript.

В моем views.py у меня есть:

arry1 = ['Str',500,20]
return render_to_response('test.html', {'array1': arry1})

И в моем шаблоне:

var array1 = {{ array1 }};

но когда я захожу на сайт, он выдает:

var array1 = ['Str',500,20];

Что я должен изменить?

Ответы [ 4 ]

71 голосов
/ 11 апреля 2009

Попробуйте использовать {{ array1|safe }} и посмотрите, имеет ли это значение. Я не проверял это, поэтому я надеюсь, что я не получу слишком много голосов, если это неправильно ...

16 голосов
/ 11 апреля 2009

Как уже упоминалось, вы можете использовать фильтр |safe, чтобы Django не очищал массив и оставлял его как есть.

Другой вариант, и, вероятно, лучший вариант в долгосрочной перспективе, - это использовать модуль simplejson (он входит в состав django) для форматирования списка Python в объект JSON, в котором вы можете плюнуть на Javascript. Вы можете циклически перемещаться по объекту JSON так же, как и по любому другому массиву.

from django.utils import simplejson
list = [1,2,3,'String1']
json_list = simplejson.dumps(list)
render_to_response(template_name, {'json_list': json_list})

А в вашем Javascript просто {{ json_list }}

6 голосов
/ 26 января 2013

В Джанго:

from django.utils import simplejson
json_list = simplejson.dumps(YOUR_LIST)

И ПРОЙДИТЕ "json_list" В КОНТЕКСТЕ

В JS:

var YOUR_JS_LIST = {{YOUR_LIST|safe}}; 
0 голосов
/ 20 мая 2016

Это может быть сделано с помощью сериализаторов ядра django. Все, что вам нужно сделать, это сериализовать ваши данные в json, а затем передать их в шаблон.

data = serializers.serialize("json", <list>)
return render(request, 'view.html', {'data':data})

В вашем шаблоне сохраните этот список в переменную javascript.

var list = {{data|safe}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...