it-swarm.com.ru

Как передать массив в Django в шаблон и использовать его с JavaScript

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

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

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

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

var array1 = {{ array1 }};

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

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

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

33
Christian

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

70
Deniz Dogan

Как уже упоминалось, вы можете использовать фильтр |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 }}

16
Bartek

В Джанго:

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

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

В JS:

var YOUR_JS_LIST = {{YOUR_LIST|safe}}; 
6
Tulio Nobrega

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

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

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

var list = {{data|safe}}
0
muak