最近发现一个不错的数据网站,
https://www.juhe.cn/ ,有很多免费接口,注册就能使用,很好用,正好在学习Tornado,就随手用Tornado写了个接口小程序。
由于之前也没系统学过json,不是很明白,重点记录一下格式转换的过程:
在Tronado中,直接导入requests包,这个很厉害
import requests
导入包就可以把自己写的网页中提交的数据连接到juhe网站了。
city_id = self.get_body_argument('city_id', None)
weather_date = self.get_body_argument('weather_date', None)
r = requests.get('http://v.juhe.cn/historyWeather/weather?city_id={}&weather_date={}&key={}'.format(city_id, weather_date, key))
注意,有一个key值,那个是注册juhe的时候给的验证字符串,我的key就不贴上来了。
用变量r接收返回值,返回的就是我需要的json对象
然后就该将json转为python字典使用了。
导入json包
import json
然后依次。。。。比较郁闷的是,没想明白为什么render中不能使用locals()这个函数。。。
res = r.text
result = json.loads(res)
return self.render('show.html', city_id=result['result']['city_id'],
city_name=result['result']['city_name'],
weather_date=result['result']['weather_date'],
day_weather=result['result']['day_weather'],
night_weather=result['result']['night_weather'],
day_temp=result['result']['day_temp'],
night_temp=result['result']['night_temp'],
day_wind=result['result']['day_wind'],
day_wind_comp=result['result']['day_wind_comp'],
night_wind=result['result']['night_wind'],
night_wind_comp=result['result']['night_wind_comp'])
这样就把返回的json值变为字典渲染到show.html上了。
<body>
<table>
<tr>
<td>城市编号</td>
<td>{{city_id}}</td>
</tr>
<tr>
<td>城市名称</td>
<td>{{city_name}}</td>
</tr>
<tr>
<td>查询日期</td>
<td>{{weather_date}}</td>
</tr>
<tr>
<td>白天天气</td>
<td>{{day_weather}}</td>
</tr>
<tr>
<td>夜间天气</td>
<td>{{night_weather}}</td>
</tr>
<tr>
<td>白天最高气温</td>
<td>{{day_temp}}</td>
</tr>
<tr>
<td>夜间最低气温</td>
<td>{{night_temp}}</td>
</tr>
<tr>
<td>白天风力</td>
<td>{{day_wind}} {{day_wind_comp}}</td>
</tr>
<tr>
<td>夜间风力</td>
<td>{{night_wind}} {{night_wind_comp}}</td>
</tr>
</table>
</body>