Использование для 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 вручную.