如何将数据从Flask传递到模板中的JavaScript?
我的应⽤程序调⽤返回字典的API。我想传递信息从这个dict到视图中的JavaScript。我在JS中使⽤Google Maps API,具体来说,所以我想传递⼀个包含long / lat信息的元组列表。我知道render_template会将这些变量传递给视图,所以他们可以在HTML中使⽤,但我如何将它们传递给模板中的JavaScript?
from flask import Flask
from flask import render_template
app = Flask(__name__)
import foo_api
api = foo_api.API('API KEY')
@ute('/')
def get_data():
events = api.call(get_event, arg0, arg1)
geocode = event['latitude'], event['longitude']
return render_template('get_data.html', geocode=geocode)
最佳答案
您可以在模板中的任意位置使⽤{{variable}},⽽不仅仅是在HTML部分。所以这应该⼯作:
<html>
<head>
<script>
var someJavaScriptVar = '{{ geocode[1] }}';
</script>
<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>
<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>
<body>
<p>Hello World</p>
<button onclick="alert('Geocode: ' + myGeocode[0] + ' ' + myGeocode[1])" /> </body>
</html>
你也可以使⽤for循环,if语句和更多,更多的。
另外看看ford的答案谁指出过滤器是⼀个除了。
如何下载javascript

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。