无法使用Flask将列表从Python传递到HTML

时间:2018-02-20 06:32:16

标签: javascript python html flask jinja2

我正在使用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

提前谢谢。

2 个答案:

答案 0 :(得分:1)

这是一个最小的例子 - 应该就是这么简单。 还有其他方法可以使用JSON.parse等来实现这一点,但这是我所知道的最简单的方法。

如果它仍然不起作用,您可能会对数据进行两次序列化/反序列化,因此请仔细检查您的类型。

>>> from scipy import stats
>>> stats.t(df=5).ppf((0.025, 0.975))
array([-2.57058184,  2.57058184])

Example Flask to JS

答案 1 :(得分:0)

尝试{% for trend in trends %} {{ trend }} {% endfor %},因为它看起来像您要发送的数据是一个列表