如何解析和渲染json以在Flask模板中使用

时间:2014-02-11 19:39:48

标签: python json templates flask python-requests

我正在努力学习Flask的来龙去脉。但我对如何在模板中从Twitter的API中提取数据感到困惑。

这是我的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>

任何正确方向的推动都会受到赞赏!

1 个答案:

答案 0 :(得分: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,了解哪些密钥存在,以及每个密钥提供的信息类型。