2017-07-18 6 views
-2

私は実際にはフラスコテンプレートのforループを印刷したいと思いますが、別の方法を使用しましたが、HTMLページに何も表示されず、Pythonコードが正しく機能していますjinjaでそれを実装する方法を知っている。フラスコ内のループがhtmlページに表示されない

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

あなたは、レンダリングされる任意のデータを渡していません。

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) 

また

{% for result in results %} 
{{ result[0] }} 
{{ result[1] }} 
{% endfor %} 
Jinja2の

でループを実装する必要があります
3

しかし、これのどれも任意の意味がありません。

あなたは一連のつぶやきを繰り返しています。そのループの中で、値を持つ変数resultcleanを繰り返し上書きします。したがって、ループの終わりには、最終変数を取得するだけです。

もちろん、これらの変数をレンダリングするテンプレートに送信することさえないので、テンプレートは空白です。

リストに値を累積する必要があります。次に、リストをテンプレートに送信する必要があります。最後に、テンプレート内のリストを反復処理する必要があります。

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 %} 
関連する問題