Ви можете використовувати {{ variable }}
будь-де у своєму шаблоні, а не лише в частині HTML. Отже, це має працювати:
<html>
<head>
<script>
var someJavaScriptVar = '{{ geocode[1] }}';
</script>
</head>
<body>
<p>Hello World</p>
<button onclick="alert('Geocode: {{ geocode[0] }} ' + someJavaScriptVar)" />
</body>
</html>
Розгляньте це як двоступеневий процес: по-перше, Jinja (механізм шаблонів, який використовує колба) генерує ваш текст. Це надсилається користувачеві, який виконує JavaScript, який він бачить. Якщо ви хочете, щоб ваша змінна Flask була доступна в JavaScript як масив, ви повинні генерувати визначення масиву у своєму виході:
<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 також пропонує більш вдосконалені конструкції від Python, так що ви можете скоротити його до:
<html>
<head>
<script>
var myGeocode = [{{ ', '.join(geocode) }}];
</script>
</head>
<body>
<p>Hello World</p>
<button onclick="alert('Geocode: ' + myGeocode[0] + ' ' + myGeocode[1])" />
</body>
</html>
Ви також можете використовувати for
петлі, if
заяви та багато іншого, докладнішу інформацію див. У документації Jinja2 .
Крім того, подивіться на відповідь Ford, який вказує на tojson
фільтр, який є доповненням до стандартного набору фільтрів Jinja2 .
Редагувати листопад 2018 року: tojson
тепер включено до стандартного набору фільтрів Jinja2.