Включение статических файлов django в javascript динамически

У меня такая ситуация. У меня есть несколько обложек книг в моих статических файлах на Django. Имена jpg файлов - это isbn каждой книги. static folder structure

Я создаю теги img на Javascript и хотел бы, чтобы эти изображения менялись динамически. Я получил isbn каждой книги уже в переменной под названием "isbn". Я присваиваю ее таким образом: var src = "{% static 'img/" + isbn + ".jpg' %}";, а затем добавляю ее к элементу img. Однако src принимается следующим образом: <img id="book-card1img" src="/static/img/%22%20%2B%20isbn%20%2B%20%22.jpg" class="card-img-top">.

Я что-то делаю не так?

Тег {% static будет сначала оценен django на стороне сервера, прежде чем будет запущен javascript (потому что js запускается в браузере после того, как django доставит страницу). Это означает, что вы не можете создавать переменные тега через javascript. Также, если ваша переменная isbn находится в javascript, она не будет известна, когда будет запущен статический тег, поэтому она будет воспринята как буквальная строка.

Вместо этого вы можете попробовать

var src = "{{static_prefix}}img/" + isbn + ".jpg"

Это делает практически то же самое, но позволяет вам больше контролировать конечный результат, позволяя js делать большую часть построения url. Подробнее см. в docs

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