KeyError异常
KeyError:' main' 追溯(最近的呼叫最后一次)
调试器在您的WSGI应用程序中捕获到异常。您现在可以查看导致错误的回溯。
要在交互式回溯和明文之间切换,您可以点击" Traceback"标题。从文本回溯中,您还可以创建它的粘贴。对于代码执行鼠标悬停在要调试的帧上,然后单击右侧的控制台图标。
from flask import Flask, render_template, request
import requests
app = Flask(__name__)
@app.route('/temperature', methods=['POST'])
def temperature():
zipcode = request.form['zip']
r = requests.get('http://api.openweathermap.org/data/2.5/weather?zip='+zipcode+',us&appid=fd38d62aa4fe1a03d86eee91fcd69f6e')
json_object = r.json()
temp_k = float(json_object['main']['temp'])
temp_f = (temp_k - 273.15) * 1.8 + 32
return render_template('temperature.html', temp=temp_f)
@app.route('/')
def index():
return render_template('index.html')
if __name__ == '__main__':
app.run(debug=True)
答案 0 :(得分:0)
阅读API docs看起来您的代码应该正确读取JSON,因此您的API密钥不正确(我提供的密码不是,但是您可能已经编辑过它了)或您要求的邮政编码不存在。
无论哪种方式,您都应该提供错误页面:
@app.route('/temperature', methods=['POST'])
def temperature():
zipcode = request.form['zip']
r = requests.get('http://api.openweathermap.org/data/2.5/weather?zip='+zipcode+',us&appid=fd38d62aa4fe1a03d86eee91fcd69f6e')
json_object = r.json()
try:
temp_k = float(json_object['main']['temp'])
temp_f = (temp_k - 273.15) * 1.8 + 32
return render_template('temperature.html', temp=temp_f)
except KeyError:
msg = 'Unknown error'
try:
msg = json_object['message']
except KeyError:
pass
print(msg)
return render_template('temperature_error.html', error=msg)
它会提供服务器提供的错误消息,因此会指出问题所在。