Możesz użyć {{ variable }}
dowolnego miejsca w swoim szablonie, nie tylko w części HTML. Więc to powinno działać:
<html>
<head>
<script>
var someJavaScriptVar = '{{ geocode[1] }}';
</script>
</head>
<body>
<p>Hello World</p>
<button onclick="alert('Geocode: {{ geocode[0] }} ' + someJavaScriptVar)" />
</body>
</html>
Potraktuj to jako proces dwuetapowy: Po pierwsze, Jinja (silnik szablonów używany przez Flask) generuje tekst. Jest to wysyłane do użytkownika, który wykonuje widziany JavaScript. Jeśli chcesz, aby zmienna Flask była dostępna w JavaScript jako tablica, musisz wygenerować definicję tablicy w swoim wyniku:
<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 oferuje również bardziej zaawansowane konstrukcje z Pythona, więc możesz je skrócić do:
<html>
<head>
<script>
var myGeocode = [{{ ', '.join(geocode) }}];
</script>
</head>
<body>
<p>Hello World</p>
<button onclick="alert('Geocode: ' + myGeocode[0] + ' ' + myGeocode[1])" />
</body>
</html>
Możesz także używać for
pętli, if
instrukcji i wielu innych, więcej informacji znajdziesz w dokumentacji Jinja2 .
Spójrz również na odpowiedź Forda, który wskazuje tojson
filtr, który jest dodatkiem do standardowego zestawu filtrów Jinja2 .
Edytuj listopad 2018: tojson
jest teraz zawarta w standardowym zestawie filtrów Jinja2.