คุณสามารถใช้ได้{{ 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 (เครื่องมือเทมเพลตใช้ Flask) สร้างเอาต์พุตข้อความของคุณ สิ่งนี้จะถูกส่งไปยังผู้ใช้ที่รัน 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สำหรับข้อมูลเพิ่มเติม
นอกจากนี้ยังมีลักษณะที่คำตอบฟอร์ดที่ชี้ให้เห็นเป็นtojson
ตัวกรองซึ่งเป็นนอกจากชุดมาตรฐาน Jinja2 ของฟิลเตอร์
แก้ไขพฤศจิกายน 2018: tojson
รวมอยู่ในชุดตัวกรองมาตรฐานของ Jinja2 แล้ว