3

我的views.py中有以下extra_context如何通过Django变量作为javascript方法参数?

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

以上所有变量均为python list的数据类型。现在我想在Gmap v3 javascript中使用这些变量。我发现的谷歌地图上下面的代码片断:(张贴的主要部分)

<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; 

}

上面的代码显示一个标记accoriding从上下文传递的latlng列表。但问题发生在那个时候,我也尝试以相同的方式通过time and user。它在地图上没有显示任何内容。顺便说一句,我试着用这个词:

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

这是正确的方法吗?我是JavaScript中的新成员,根据代码latlng写道。我试过alert(timestamp)。什么也没有发生:(

另一个问题是我必须通过这三个参数add_marker Java脚本方法,为此,我必须同时运行三个for循环发布的伪代码:。

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); 

回答

3

你需要定义变量:

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

即值之间的阵列添加逗号

+0

我想''{{i}}'应该用引号括起来。 – 2014-07-24 10:58:32

2

使用django-jsonify。在您的模板中使用例如

var user = {{ user|jsonify }}; 

像魔术一样。

相关问题