我正在使用Flask将一个数组从我的Python函数传递给JavaScript,但它不起作用,因为我没有得到任何结果。
python函数完美运行并打印来自Twitter API的趋势主题标签,但当我尝试在我的html页面的标题中打印{{trends}}时(我把它放在h1中)我得到相同的字符串显示哪个是只是单词{{trends}}
Python代码,hashtags.py
import tweepy
import json
import os
from flask import Flask, request, render_template
app = Flask(__name__)
@app.route('/map/<trends>')
def trend_hash(id):
x1=0
for location in api.trends_place(id):
for trend in location["trends"] :
if x1!=3:
print (" - %s" % trend["name"])
trends = trend["name"]
x1+=1
with app.app_context():
return render_template('map.html', trends=trends)
trend_hash(1939753)
if __name__ == "__main__":
app.run(host=os.getenv('IP','0.0.0.0'), port=int(os.getenv('PORT',8080)))
我只是尝试在我的HTML正文中打印结果,例如map.html:
<h1>{{ trends }}</h1>
我应该在我的脚本中使用它,但我只是希望它显示它并查看结果然后处理我的JavaScript代码。
请注意我已尝试过:
return render_template("map.html", trends=json.dumps(trends))
但我一无所获。
当我尝试使用我的脚本在我的控制台上打印它时:
var trends = JSON.stringify({{ trends|safe }});
console.log(trends);
或者:
var trends = {{ trends|tojson }};
console.log(trends);
或者:
trends = {{ trends|tojson|safe }};
我明白了:
Unexpected token {
我试过这里说的话: JavaScript raises SyntaxError with JSON rendered in Jinja template
但它不起作用。
我的框架是:Cloud9
提前谢谢。
答案 0 :(得分:1)
这是一个最小的例子 - 应该就是这么简单。 还有其他方法可以使用JSON.parse等来实现这一点,但这是我所知道的最简单的方法。
如果它仍然不起作用,您可能会对数据进行两次序列化/反序列化,因此请仔细检查您的类型。
>>> from scipy import stats
>>> stats.t(df=5).ppf((0.025, 0.975))
array([-2.57058184, 2.57058184])
答案 1 :(得分:0)
尝试{% for trend in trends %} {{ trend }} {% endfor %}
,因为它看起来像您要发送的数据是一个列表