在我的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.log('<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);
};
答案 0 :(得分:1)
{% static \'images/'+json[index].html+'\' %}
您无法执行此操作,因为在浏览器运行您的JavaScript之前,{% static %}
模板标记在服务器上呈现。
您可以使用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
。