javascript python json python-2.7 jinja2

enviando datos como objeto JSON desde Python a Javascript con Jinja



python-2.7 jinja2 (1)

Esta pregunta ya tiene una respuesta aquí:

Estoy tratando de enviar un punto lat / long como un objeto JSON desde Python a un javascript. Estoy usando Flask, así que lo siguiente es la plantilla de Jinja ...

Pitón:

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

html con js:

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

Estoy usando la evaluación porque la notación estándar de Jinja de la variable = {{datos}} no funciona y encontré algunos consejos que la evaluación era necesaria. ¿Algún consejo?


La documentación de Flask Jinja2 cubre esto bastante bien. El primer ejemplo en la sección "Filtros estándar" muestra exactamente cómo incrustar un objeto JSON de python en un script de Javascript:

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

Así que en este caso:

var lat_lng = {{ lat_lng|tojson|safe }};

tojson llama a los dumps en los datos, por lo que debe pasar los datos directamente a la plantilla en lugar de llamarlos a los dumps de lo contrario, serializará los datos dos veces y terminará con una cadena JSON.