服务器端使用 python 和 flask,html 模板是 jinja2。我正在尝试用谷歌 API 制作一个标记。纬度和经度信息存储在从python传递的stores[][]
中。此代码位于我的 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 个元素。这是非常非常令人困惑的。
你不能这样做。Jinja 完全在服务器上进行评估,远远早于 JS 可以在客户端上运行。Jinja 无法访问 JS 代码中的变量。
您应该将循环移动到金贾本身。
{% for store in stores %}
var marker = new google.maps.Marker({position: {lat: {{ store[5] }}, lng: {{ store[6] }}}, map: map});
{% endfor %}