使用 Jinja 将数据作为 JSON 对象从 Python 发送到 Javascript [重复]
Posted
技术标签:
【中文标题】使用 Jinja 将数据作为 JSON 对象从 Python 发送到 Javascript [重复]【英文标题】:sending data as JSON object from Python to Javascript with Jinja [duplicate] 【发布时间】:2014-09-03 08:52:07 【问题描述】:我正在尝试将 lat/long 点作为 JSON 对象从 Python 发送到 javascript。我正在使用 Flask,所以以下是 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>
我使用 eval 是因为 variable = data 的标准 Jinja 表示法不起作用,我发现一些建议 eval 是必要的。有什么建议吗?
【问题讨论】:
如果退出 eval 然后使用 console.log(lat_lng) 打印 lat_lng 变量会发生什么??? 【参考方案1】:The Flask Jinja2 documentation 很好地涵盖了这一点。 “标准过滤器”部分下的第一个示例准确显示了如何将 JSON 对象从 python 嵌入到 Javascript 脚本中:
<script type=text/javascript>
doSomethingWith( user.username|tojson|safe );
</script>
所以在这种情况下:
var lat_lng = lat_lng|tojson|safe ;
tojson
对数据调用 dumps
,因此您应该将数据直接传递给模板,而不是对其调用 dumps
,否则您会双重序列化数据并最终得到 JSON 字符串。
【讨论】:
是的,阅读相同的 Flask 文档,我已经完全尝试过该语法并得到控制台错误“lat_lng 未定义”。此外,该行在我的 IDE 中恰好在第一个大括号的列中出现“无效属性 id”的语法错误。我正在运行 Python 2.7 和 Flask 0.10.1 你确定你通过 lat_lng 作为模板参数? 我只是决定使用 AJAX 和 jquery 而不是搞乱它。谢谢!以上是关于使用 Jinja 将数据作为 JSON 对象从 Python 发送到 Javascript [重复]的主要内容,如果未能解决你的问题,请参考以下文章
使用 Jinja2 在 GAE 中存储 Javascript 对象