Vous pouvez utiliser {{ variable }}
n'importe où dans votre modèle, pas seulement dans la partie HTML. Donc, cela devrait fonctionner:
<html>
<head>
<script>
var someJavaScriptVar = '{{ geocode[1] }}';
</script>
</head>
<body>
<p>Hello World</p>
<button onclick="alert('Geocode: {{ geocode[0] }} ' + someJavaScriptVar)" />
</body>
</html>
Considérez-le comme un processus en deux étapes: Premièrement, Jinja (le moteur de modèle utilisé par Flask) génère votre sortie texte. Ceci est envoyé à l'utilisateur qui exécute le JavaScript qu'il voit. Si vous souhaitez que votre variable Flask soit disponible en JavaScript sous forme de tableau, vous devez générer une définition de tableau dans votre sortie:
<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 propose également des constructions plus avancées de Python, vous pouvez donc les raccourcir en:
<html>
<head>
<script>
var myGeocode = [{{ ', '.join(geocode) }}];
</script>
</head>
<body>
<p>Hello World</p>
<button onclick="alert('Geocode: ' + myGeocode[0] + ' ' + myGeocode[1])" />
</body>
</html>
Vous pouvez également utiliser des for
boucles, des if
instructions et bien d'autres, voir la documentation Jinja2 pour plus.
Jetez également un œil à la réponse de Ford qui souligne le tojson
filtre qui est un ajout à l'ensemble standard de filtres de Jinja2 .
Edit Nov 2018: tojson
est maintenant inclus dans l'ensemble standard de filtres de Jinja2.