在 JavaScript 变量中使用 for django 循环

Using for django loop inside of a JavaScript variable

我想在 JavaScript 中循环执行 django 查询,例如: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 (reading 'poster'),

但是如果我使用控制台日志

console.log(element.getElementsByTagName('img').src = songs[I].poster);

它在控制台中有效。

您的 foor 循环中缺少 ,。因此,您遇到语法错误。

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

如果您想将对象数据转换为 json,您也可以在视图中执行此操作并将 json 日期作为模板变量传递,而不是手动创建 songs .