緯度/経度のポイントを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>
変数= {{data}}の標準のJinja表記が機能せず、evalが必要であるというアドバイスを見つけたので、evalを使用しています。何かアドバイス?
Flask Jinja2ドキュメント はこれをかなりカバーしています。「標準フィルター」セクションの最初の例は、pythonをJavaScriptスクリプトに:
<script type=text/javascript>
doSomethingWith({{ user.username|tojson|safe }});
</script>
したがって、この場合:
var lat_lng = {{ lat_lng|tojson|safe }};
tojson
はデータに対してdumps
を呼び出すため、dumps
を呼び出すのではなく、テンプレートに直接データを渡す必要があります。そうしないと、データを二重シリアル化して、 JSON文字列。