您可以
{{ variable }}在模板的任何地方使用,而不仅限于HTML部分。所以这应该工作:<html><head> <script> var someJavascriptVar = '{{ geopre[1] }}'; </script></head><body> <p>Hello World</p> <button onclick="alert('Geopre: {{ geopre[0] }} ' + someJavascriptVar)" /></body></html>可以将其视为两个阶段的过程:首先,Jinja(Flask使用的模板引擎)生成文本输出。这将发送给执行他所看到的Javascript的用户。如果希望Flask变量作为数组在Javascript中可用,则必须在输出中生成数组定义:
<html> <head> <script> var myGeopre = ['{{ geopre[0] }}', '{{ geopre[1] }}']; </script> </head> <body> <p>Hello World</p> <button onclick="alert('Geopre: ' + myGeopre[0] + ' ' + myGeopre[1])" /> </body></html>Jinja还提供了来自Python的更高级的构造,因此您可以将其缩短为:
<html><head> <script> var myGeopre = [{{ ', '.join(geopre) }}]; </script></head><body> <p>Hello World</p> <button onclick="alert('Geopre: ' + myGeopre[0] + ' ' + myGeopre[1])" /></body></html>您还可以使用
for循环,
if语句等,请参阅Jinja2文档以获取更多信息。
另外,看看福特的答案,谁指出了
tojson过滤器,它是对Jinja2标准过滤器集的补充。
编辑2018年11月:tojson
现在已包含在Jinja2的标准过滤器集中。



