Flask和Jinja2 url_for错误 - 将json对象连接到url_for

时间:2015-02-05 16:58:46

标签: python flask jinja2 mapbox

我正在使用带有Jinja2和MapBox的Flask项目,该项目涉及使用从模型数据派生的GeoJSON在地图上绘制数据。如何加载它的示例:

$.getJSON("{{ url_for(".geojson") }}", function(data) {
    var geojson = L.geoJson(data, {
      onEachFeature: function (feature, layer) {

     //do stuff

      }
    });
    markers.addLayer(geojson);

    var map = L.map('map', {maxZoom: 9, minZoom: 3}).fitBounds(markers.getBounds());
    baseLayer.addTo(map);
    markers.addTo(map);

在我的JS中使用此JSON数据的示例:

var feature = e.layer.feature;
//print item name
console.log(feature.properties.name)
//print item latitude
console.log(feature.properties.latitude)
//print item category info
console.log(feature.properties.category.name)

这很有效。我的数据集现已扩展为包含图片网址(示例09379_580_360.jpg),图片本身也托管在static/images/eol文件夹中。我希望将这些作为图像包含在DIV中,我通过JS动态设置这样的图像......

var commoncontent = '<div class="panel-heading"><h3>'+feature.properties.name+'</h3></div>'
$('#common').html(commoncontent)

但是,当我尝试将我的图像数据连接到jinja的url_for ...

var commoncontent = '<div><img src="{{ url_for("static", filename="images/eol/thumbs/big/'+feature.properties.category.localimageurl.jpg+'") }}"></div>'

...我在控制台中收到此错误

 GET http://127.0.0.1:5000/static/images/eol/thumbs/big/feature.properties.category.localimageurl.jpg 404 (NOT FOUND)

我知道feature.properties.category.localimageurl是正确的,因为它在我的console.log()时打印到我的控制台。但是,我不知道为什么解释器直接将它作为一个字符串而不是连接它?

1 个答案:

答案 0 :(得分:1)

feature是一个JavaScript对象。 Jinja无法接触到那些;它在服务器上运行,而您的JavaScript在客户端运行。呈现模板时,feature不存在。您需要使用JavaScript处理串联。

var commoncontent = '<div><img src="{{ url_for("static", filename="images/eol/thumbs/big/") }}' + feature.properties.category.localimageurl.jpg + '"></div>'