我实际上是想在flask模板中打印一个for循环,我使用了不同的方法,但html页面上没有任何内容,python代码工作正常,我只是不知道如何用jinja实现它。< / p>
Views.py
@app.route('/results', methods=['POST', 'GET'])
def results():
keyword = {'keyword': request.args.get('keyword')} # First Method
keyword = request.form['keyword'] # Second Method
num_tweets=5
for tweet in tweepy.Cursor(api.search,q=str(keyword)+
" -filter:retweets",
result_type='recent',
lang="en").items(num_tweets):
clean = re.sub(r"(?:@\S*|#\S*|http(?=.*://)\S*)", "", tweet.text)
result = cool.api(clean)
return render_template('pages/results.html')
Results.html
<body>
<div>
{{ result }}
{{ clean }}
</div>
</body>
答案 0 :(得分:3)
但这一切都没有任何意义。
你通过一系列推文循环播放。在该循环内,您反复使用值覆盖result
和clean
变量。因此,在循环结束时,您只需获得最终变量。
当然,所有这些都没有任何区别,因为您甚至不会将这些变量发送到要呈现的模板,因此模板当然是空白的。
您需要在列表中累积值。然后,您需要将列表发送到模板。最后,您需要遍历模板中的列表。
results = []
for tweet in ...:
clean = re.sub(r"(?:@\S*|#\S*|http(?=.*://)\S*)", "", tweet.text)
result = cool.api(clean)
results.append((clean, result))
return render_template('pages/results.html', results=results)
...
{% for clean, result in results %}
{{ clean }}
{{ result }}
{% endfor %}
答案 1 :(得分:1)
您没有传递任何要渲染的数据。
results = list()
for tweet in tweepy.Cursor(api.search,q=str(keyword)+
" -filter:retweets",
result_type='recent',
lang="en").items(num_tweets):
clean = re.sub(r"(?:@\S*|#\S*|http(?=.*://)\S*)", "", tweet.text)
result = cool.api(clean)
results.append((result, clean))
return render_template('pages/results.html', results=results)
您还需要在Jinja2中实现一个循环
{% for result in results %}
{{ result[0] }}
{{ result[1] }}
{% endfor %}