Как передать переменную Django в качестве параметра метода javascript?



У меня есть следующий extra_context в моем views.py.



extra_context = {
'user': list_user,
'time': str(list_time),
'latlng': list_latlng
}


Все вышеперечисленные переменные являются типом данных python list. Теперь я хочу использовать эти переменные в gmap v3 javascript. Я нашел следующий фрагмент для google map: (размещение основной части)



<script type="text/javascript">
var map ;
function initialize() {
var latlng = new google.maps.LatLng(-34.397, 150.644);
var myOptions = {
zoom: 2,
center: latlng,
mapTypeId: google.maps.MapTypeId.TERRAIN
};

map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

var flightPlanCoordinates = [ {% for ip in latlng %}{{ ip }}{% endfor %}];
for(var i in flightPlanCoordinates){
var marker = add_marker(flightPlanCoordinates[i][0], flightPlanCoordinates[i][1],"Some title!","html for info box");
marker.setMap(map);
}
}

function add_marker(lat,lng,title,box_html) {
var infowindow = new google.maps.InfoWindow({
content: box_html
});

var marker = new google.maps.Marker({
position: new google.maps.LatLng(lat,lng),
map: map,
title: title
});

google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map,marker);
});

return marker;


}



Приведенный выше код показывает маркер, соответствующий списку latlng, переданному из контекста. Но проблема возникает в то время, когда я тоже пытался пройти time and user тем же путем. Он ничего не показывает на карте. Между прочим я попробовал с этим coide:

var user = [{% for i in user %}{{ i }}{% endfor %}]; 
var timestamp = [{% for y in time %}{{ y }}{% endfor %}];


Это правильный путь? Я новичок в javascript, я написал в соответствии с кодом latlng.



Я попробовал с alert(timestamp). Ничего не происходит : (



Другая проблема заключается в том, что я должен передать эти три параметра в add_marker
метод java script. Для этого мне нужно выполнить три петли одновременно. Размещение псевдокода:



var user = [{% for i in user %}{{ i }}{% endfor %}]; 
var timestamp = [{% for y in time %}{{ y }}{% endfor %}];
var flightPlanCoordinates = [ {% for ip in latlng %}{{ ip }}{% endfor %}];
for (var in flightPlanCoordinates) and for (a in timestamp) and for(b in user)
{
var marker = add_marker(flightPlanCoordinates[i][0], flightPlanCoordinates[i][1],b,a);
marker.setMap(map);
761   2  

2 ответов:

Вам нужно определить переменные следующим образом:

var user = [{% for i in user %}{{ i }}{% if forloop.last %} {%else%} , {%endif%} {% endfor %}];

То есть добавьте запятую между значениями в массиве.

Используйтеdjango-jsonify . При использовании шаблона, например

var user = {{ user|jsonify }};

Как по волшебству.

Comments

    Ничего не найдено.