Как получить список Django в виде массива в Javascript
Я отправляю список django из view.py в мой javascript. Но когда я получаю список в javscript, он возвращает мне только строку. Я пытался вывести тип переменной, но он показывает false, что означает, что список не является массивом. Как я могу получить список в виде массива в Javascript?
View.py
mergedCompare = [item_listAssigned[f'subject{i}'] + ': ' + item_listAssigned[f'serial{i}'] for i in range(1, len(item_listAssigned) // 2 + 1)]
global context
context = {
'mergedCompare': mergedCompare
}
mergedCompare = ['EMP004: BPCE-RNHC-25G8', 'EMP003: 8FIW-9JRB-NY4J', 'EMP005: 7QF2-6HI9-XKZZ', 'EMP002: SG8P-YQKG-ZV3C', 'EMP001: PBF7-WZHT-WPZR']
JavaScript:
var assignedDevices = "{{mergedCompare|safe}}"
const list = assignedDevices;
console.log(Array.isArray(list)) //false , not array
Вы можете вывести содержимое JSON в виде сценария JavaScript с помощью фильтра шаблона |json_script
[Django-doc]. Затем вы можете загрузить JSON blobk с помощью JSON.parse(…)
:
{{ mergedCompare|json_script:"mergedCompare" }}
<script>
var assignedDevices = JSON.parse(document.getElementById('mergedCompare').textContent);
const list = assignedDevices;
console.log(Array.isArray(list))
</script>
Еще несколько подходов в дополнение к предыдущему ответу:
- использование безопасного фильтра
# your view code
...
return render(request, 'some.html', context = {"my_list": ["item1", "item2"]})
# your template code
{{ my_list|safe }}.forEach // array
- дамп в/из JSON
import json
# your view code
...
mylist = json.dumps(mylistraw)
return render(request, 'some.html', context = {"my_list": mylist})
# your template code
var mylist = JSON.parse("{{mylist}}")