Включение статических файлов django в javascript динамически
У меня такая ситуация. У меня есть несколько обложек книг в моих статических файлах на Django. Имена jpg файлов - это isbn каждой книги.
Я создаю теги 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