Подтвердить что ты не робот

Как передать массив в 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];

Что мне нужно изменить?

4b9b3361

Ответ 1

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

Ответ 2

Как уже упоминалось, вы можете использовать фильтр безопасности, поэтому Django не дезинфицирует массив и оставляет его как есть.

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

из 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}}

Ответ 3

В Django:

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

И PASS "json_list" В КОНТЕКСТЕ

IN JS:

var YOUR_JS_LIST = {{YOUR_LIST|safe}}; 

Ответ 4

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

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

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

var list = {{data|safe}}