Puede usar {{ variable }}
cualquier parte de su plantilla, no solo en la parte HTML. Entonces esto debería funcionar:
<html>
<head>
<script>
var someJavaScriptVar = '{{ geocode[1] }}';
</script>
</head>
<body>
<p>Hello World</p>
<button onclick="alert('Geocode: {{ geocode[0] }} ' + someJavaScriptVar)" />
</body>
</html>
Piense en ello como un proceso de dos etapas: primero, Jinja (el motor de plantillas que utiliza Flask) genera su salida de texto. Esto se envía al usuario que ejecuta el JavaScript que ve. Si desea que su variable Flask esté disponible en JavaScript como una matriz, debe generar una definición de matriz en su salida:
<html>
<head>
<script>
var myGeocode = ['{{ geocode[0] }}', '{{ geocode[1] }}'];
</script>
</head>
<body>
<p>Hello World</p>
<button onclick="alert('Geocode: ' + myGeocode[0] + ' ' + myGeocode[1])" />
</body>
</html>
Jinja también ofrece construcciones más avanzadas de Python, por lo que puede acortarlo a:
<html>
<head>
<script>
var myGeocode = [{{ ', '.join(geocode) }}];
</script>
</head>
<body>
<p>Hello World</p>
<button onclick="alert('Geocode: ' + myGeocode[0] + ' ' + myGeocode[1])" />
</body>
</html>
También puede usar for
bucles, if
declaraciones y muchos más, consulte la documentación de Jinja2 para obtener más información.
Además, eche un vistazo a la respuesta de Ford que señala el tojson
filtro, que es una adición al conjunto estándar de filtros de Jinja2 .
Editar noviembre de 2018: tojson
ahora está incluido en el conjunto estándar de filtros de Jinja2.