В моем приложении django я пытаюсь получить имя загружаемого изображения из переменной JSON. В его HTML-ключе есть имя изображения, которое будет отображаться. Я читаю этот ключ и добавляю его в статический путь, но получаю эту ошибку
TemplateSyntaxError at Could not parse the remainder
JSON
var json = [{
"html": "abc.jpg", //testing this failed
"col": 1,
"row": 1,
"size_y": 2,
"size_x": 2
}, {
"html": "def.jpg",
"col": 4,
"row": 1,
"size_y": 2,
"size_x": 2
},
{
"html": "bac.jpg",
"col": 6,
"row": 1,
"size_y": 2,
"size_x": 2
},
{
"html": "xyz.jpg",
"col": 1,
"row": 3,
"size_y": 1,
"size_x": 1
}, {
"html": "Brand.jpg",
"col": 4,
"row": 3,
"size_y": 1,
"size_x": 1
},
{
"html": "Brand.jpg",
"col": 6,
"row": 3,
"size_y": 1,
"size_x": 1
}
];
Мой цикл используется для извлечения имени изображения и других необходимых параметров
for(var index=0;index<json.length;index++) {
gridster.add_widget('<li class = "new" ><button class = "delete-widget-button" style = "float: right;">-</button><img src = "{% static \'images/'+json[index].html+'\' %}"></li>',json[index].size_x,json[index].size_y,json[index].col,json[index].row);
};
Проверьте в этом цикле переменную, которую я получаю
var json = [{
"html": "abc.jpg", //testing this failed
"col": 1,
"row": 1,
"size_y": 2,
"size_x": 2
}, {
"html": "def.jpg",
"col": 4,
"row": 1,
"size_y": 2,
"size_x": 2
}, {
"html": "bac.jpg",
"col": 6,
"row": 1,
"size_y": 2,
"size_x": 2
}, {
"html": "xyz.jpg",
"col": 1,
"row": 3,
"size_y": 1,
"size_x": 1
}, {
"html": "Brand.jpg",
"col": 4,
"row": 3,
"size_y": 1,
"size_x": 1
}, {
"html": "Brand.jpg",
"col": 6,
"row": 3,
"size_y": 1,
"size_x": 1
}
];
for(var index=0;index<json.length;index++) {
console.info('<li class = "new" ><button class = "delete-widget-button" style = "float: right;">-</button><img src = "{% static \'images/'+json[index].html+'\' %}"></li>',json[index].size_x,json[index].size_y,json[index].col,json[index].row);
};Итак, как загрузить изображение в этом случае, я хочу загрузить изображение с сервера, соответствующего имени в json
Если json определен в шаблоне, вы можете использовать там тег static. Или вам может быть проще удалить статический тег и жестко закодировать префикс.
просто жестко запрограммировать префикс, как в адресе сервера? 127.0.0.1:8000/static/imageshttp://127.0.0.1:8000/static/images
Да, я это имел в виду. Однако вам не нужен домен, подойдет /static/images/.
Также, чтобы дать вам представление, мой шаблон чем-то похож на этот jsfiddle.net/52oxn6g9
Позвольте нам продолжить обсуждение в чате.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


{% static \'images/'+json[index].html+'\' %}
Вы не можете этого сделать, потому что тег шаблона {% static %} отображается на сервере перед, а браузер запускает ваш JavaScript.
Вы можете использовать тег get_static_prefix (обратите внимание, что это не будет работать для всех бэкэндов хранения статических файлов).
{% load static %}
"{% get_static_prefix %}" + json[index].html
Или, поскольку вы определяете json в своем шаблоне, вы можете повторно использовать static там.
var json = [{
"html": "abc.jpg", //testing this failed
"image": "{% static "abc.jpg" %}",
...
Затем используйте image в своем цикле.
{% static \'images/'+json[index].html+'\' %}- вы не можете этого сделать - шаблон отображается на сервере до того, как ваш браузер запустит цикл JavaScript.