Использование для django цикла внутри переменной JavaScript

Я хочу просмотреть запрос django в JavaScript, пример: musics = Music.query.all().

Я сделал примерно следующее:

  const songs = [
  {% for music in musics %}
    {
      id: "{{music.id }}",
      songName: "{{ music.title 
      }}",
      poster: "{{ 
          music.cover_image.url 
      }}",
    }
  {% endfor %}
]
 Array.from(document.getElementsByClassName("songItem")).forEach((element, I) =>{
  element.getElementsByTagName('img').src = songs[I].poster;
})

Получаю Uncaught TypeError: Cannot read properties of undefined (чтение 'poster'), но если я использую консольный лог

 console.log(element.getElementsByTagName('img').src = songs[I].poster);
``` it works in the console. 

Вам не хватает , в вашем цикле foor. Поэтому вы получаете синтаксическую ошибку.

const songs = [
  {% for music in musics %}
    {id: "{{music.id }}",
     songName: "{{ music.title}}",
     poster: "{{music.cover_image.url}}",
    }, // <-- HERE 
  {% endfor %}
]

Если вы хотите преобразовать данные объекта в json, вы также можете сделать это в представлении и передать дату json в качестве переменной шаблона вместо того, чтобы создавать songs вручную.

Вернуться на верх