То же утверждение выдает ошибку внутри цикла - PullRequest
0 голосов
/ 14 декабря 2018

На стороне сервера используется python с флягой, а html-шаблон - jinja2.Я пытаюсь сделать маркер с Google API.Информация о широте и долготе хранится в stores[][], который передается из Python.Этот код находится между тегом <script> в моем html-файле и работает нормально.

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 голосов
/ 14 декабря 2018

Вы не можете сделать это.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 %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...