2017-07-21 26 views
-2

KeyError例外デバッガがあなたのWSGIアプリケーションで例外をキャッチ:KeyError例外KeyError例外を取得: 'メイン' トレースバック(最新の呼び出しを最後)

KeyError例外: 'メイン' トレースバック(最新の呼び出しの最後)

デバッガは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

これはすべてあなたのコードですか?トレースバックを提供してください。ヒント:あなたが試したことを述べ、トレースバックを含むすべての関連データを提供する必要があります。だからこそあなたは投票に落ちています。 – rubenwardy

+0

トレースバックの取得方法を示すテキストをすべてコピーするのではなく、実際のトレースバック*を投稿するのはなぜですか? –

+0

アクセスする前に 'json_object'に正しいキーがあることを確認してください。また、HTTPエラーをチェックしません。サーバーエラーを送信するとどうなりますか? – Himal

答えて

0

それが正しくJSONをお読みくださいあなたのコードのように見えるAPI docsを読むので、どちらかあなたの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) 

それは、サーバによって与えられたエラーメッセージを提供するだろう、とその問題が何であるかを示します。

関連する問題