使用Jinja将数据作为JSON对象从Python发送到Javascript

使用Jinja将数据作为JSON对象从Python发送到Javascript,javascript,python,json,python-2.7,jinja2,Javascript,Python,Json,Python 2.7,Jinja2,我试图将一个lat/long点作为JSON对象从Python发送到javascript。我使用的是烧瓶,所以下面是Jinja模板 Python: @app.route('/') def homepage(): lat_lng = (39.7392,-104.9847) return render_template("index_v2.html", lat_lng=json.dumps(lat_lng)) 带js的html: <script type='text/java

我试图将一个lat/long点作为JSON对象从Python发送到javascript。我使用的是烧瓶,所以下面是Jinja模板

Python:

@app.route('/')
def homepage():
    lat_lng = (39.7392,-104.9847) 
    return render_template("index_v2.html", lat_lng=json.dumps(lat_lng))
带js的html:

<script type='text/javascript'>
    var map;
    function initialize() {
      // Create the map.
      var lat_lng = eval('({{ lat_lng }})')
      map = new google.maps.Map(document.getElementById('map-canvas'), {
        zoom: 8,
        center: new google.maps.LatLng(lat_lng)
      });

    }

    google.maps.event.addDomListener(window, 'load', initialize);
  </script>

var映射;
函数初始化(){
//创建地图。
var lat_lng=eval(“({lat_lng}})”
map=new google.maps.map(document.getElementById('map-canvas'){
缩放:8,
中心:新google.maps.LatLng(lat_lng)
});
}
google.maps.event.addDomListener(窗口“加载”,初始化);
我使用eval是因为variable={{data}}的标准Jinja表示法不起作用,我发现一些建议认为eval是必要的。有什么建议吗?

很好地涵盖了这一点。“标准过滤器”部分下的第一个示例确切地展示了如何将python中的JSON对象嵌入Javascript脚本:

<script type=text/javascript>
    doSomethingWith({{ user.username|tojson|safe }});
</script>

tojson
对数据调用
dumps
,因此您应该直接将数据传递到模板,而不是对其调用
dumps
,否则您会对数据进行双重序列化,并最终得到一个JSON字符串。

如果退出eval,然后使用console.log(lat\u lng)打印lat\u lng变量会发生什么,阅读相同的Flask文档,我已经完全尝试了该语法,并得到了控制台错误“lat_lng未定义”。此外,该行在我的IDE中正好在第一个花括号的列处出现了一个语法错误“invalid property id”。我正在运行Python2.7和Flask 0.10.1,您确定要将lat_lng作为模板参数传递吗?我只是决定使用AJAX和jquery,而不是将其弄乱。谢谢
var lat_lng = {{ lat_lng|tojson|safe }};