同一条语句在for循环内给出错误

时间:2018-12-14 15:42:20

标签: javascript python google-maps flask jinja2

服务器端使用带有flask的python,而html模板是jinja2。我正在尝试使用Google API进行标记。纬度和经度信息存储在stores[][]中,该信息是从python传递过来的。这段代码在我的html文件的<script>标记之间,可以正常工作。

var marker = new google.maps.Marker({position: {lat: {{stores[0][5]}}, lng: {{stores[0][6]}}}, map: map});
var marker = new google.maps.Marker({position: {lat: {{stores[4][5]}}, lng: {{stores[4][6]}}}, map: map});

我有多个lat,lng要用来做标记,所以我将其放在for循环中。

var i;
for (i = 0; i < 5; i++) { 
  var marker = new google.maps.Marker({position: {lat: {{stores[i][5]}}, lng: {{stores[i][6]}}}, map: map});
}

完全相同的代码,但是放置的索引是i而不是用于索引的数字。突然出现错误提示

jinja2.exceptions.UndefinedError: list object has no element Undefined

我再次检查了stores[][]是否包含5个以上的元素。这非常令人困惑。

1 个答案:

答案 0 :(得分:1)

您不能这样做。 Jinja在JS可以在客户端上运行之前就完全在服务器上评估了。 Jinja无法通过JS代码访问变量。

您应该将循环移动到Jinja本身。

{% for store in stores %}
   var marker = new google.maps.Marker({position: {lat: {{ store[5] }}, lng: {{ store[6] }}}, map: map});
{% endfor %}