2014-02-11 27 views
0

我正在尝试学习Flask的细节。但我对如何在模板中呈现从Twitter的API中提取的数据感到困惑。如何解析和渲染JSON以用于Flask模板

这里是我的瓶的应用程序代码:

from flask import Flask, request, session, g, redirect, url_for, abort, render_template, flash 
import requests 
from requests_oauthlib import OAuth1 

CONSUMER_KEY = '' 
CONSUMER_SECRET = '' 
OAUTH_TOKEN = '' 
OAUTH_TOKEN_SECRET = '' 

auth = OAuth1(CONSUMER_KEY, CONSUMER_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET) 

url = 'https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=twitterapi&count=1' 

response = requests.get(url, auth=auth) 

# create the app 
app = Flask(__name__) 
app.config.from_object(__name__) 

@app.route('/') 
def show_tweets(): 
    tweets = response 
    return render_template('show_tweets.html', tweets = tweets) 

if __name__ == '__main__': 
    app.run() 

而且从show_tweets.html模板片段:

<ul> 
{% for tweet in tweets %} 
    <li>{{ tweet }}</li> 
{% endfor %} 
</ul> 

在正确的方向推任何将不胜感激!

回答

2

您没有从Twitter响应中加载JSON数据;使用Response.json() method将数据加载到一个Python列表:

tweets = response.json() 

结果是字典的列表,请参阅statuses/user_timeline API documentation

在模板然后你可以遍历这些字典,并拉出信息:

<ul> 
{% for tweet in tweets %} 
    <li>{{ tweet.text }}</li> 
{% endfor %} 
</ul> 

将呈现text键每个鸣叫,例如。请参阅Tweets API documentation了解哪些密钥存在以及每个密钥提供哪些类型的信息。