Как из словаря с ключем забрать список Javascript

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

Если что словарь приходит из Backend Django

Вот что прилетает в console.log

введите сюда описание изображения

А это то, что в терминале

введите сюда описание изображения

На всякий случай вот мой views.py

 from django.shortcuts import render
 import json

 def index(request):
 spisok = main.start.lists
 data = {
     'count': spisok,
 }
 var = json.dumps(data)
 context = {"count":var}

 print(var)
 return render(request, 'main/index.html', context)

И ещё index.html

<div class="content">
<div class="task" id="span-task"></div>
<br>
<button class="btn-next" id="next-button">Проверить</button>
{% comment %} <script>console.log({{count|safe}}) </script> {% endcomment %}
<script>
var data = {{count|safe}}
GetTask(data)
</script>
</div>

Как всё это сделать на JavaScript не знаю


Ответы (1 шт):

Автор решения: highpassion

У вас приходит ответ от сервера в виде объекта, свойство count которого имеет значение массива. Я написал функцию, которая принимает аргумент в виде массива, проходится по нему встроенным методом массивов forEach(), добавляя содержимое каждого элемента массива в элемент списка #tasks в макете HTML при нажатии кнопки.

При нажатии кнопки срабатывает событие onclick (описать действия при событии можно в атрибуте, либо в самом js как document.querySelector(ваш_селектор).onclick) и запускается функция с нужным аргументом, у меня это свойство объекта obj (obj.count), а у вас это будет выглядеть как data.count, если вы ответ помещаете в переменную data.

Чтобы избежать ошибок последовательности исполнения скриптов, я добавил проверку на тип данных у аргумента функции (null является объектом в JavaScript, однако это ошибка языка). В примере есть строчки, которые вам не нужны, они для имитации ответа сервера.

Справка:

forEach()
DOM Events
querySelector()
Типа данных JavaScript

//строчки, которые вам нужно удалить, это для воспроизведения примера
let obj = {
  count: ['9 + 6', '5 + 3 ', '1 + 7', '7 + 10']
}
//строчки, которые вам нужно удалить, это для воспроизведения примера

function getTask(data) {
  if (typeof data === 'object' && data !== null) {
    let i = 0;
    document.querySelector('#next-button').onclick = ()=> {
      if(i < data.length) {
        document.querySelectorAll('#tasks li')[i].innerHTML = data[i];
        i++;
      }  
    };
    
  } else {
    return;
  }
}

getTask(obj.count);
<button class="btn-next" id="next-button">Проверить</button>

<ul id="tasks">
 <li></li>
 <li></li>
 <li></li>
 <li></li> 
</ul>

<script>
//var data = {{count|safe}}
//GetTask(data)
</script>

→ Ссылка