2016-09-16 10 views
1

次の関数を使用すると、ビューが404を返すときにエラーハンドラが呼び出されると予想されますが、トリガしません。ビューが404を返すときに404エラーハンドラが呼び出されないのはなぜですか?Flaskエラーハンドラが返されるビューに対して呼び出されない404

@app.errorhandler(404) 
def error(e): 
    return render_template('error.html'), 404 


@app.route('/error/') 
def error_test(): 
    return '', 404 

答えて

1

エラーハンドラはエラーを処理します。 return '',404の場合は、機能が正常に終了したばかりで、404 HTTPコードが返されたばかりです。エラーがないため、エラーハンドラは呼び出されません。

私たちは例外でエラーを報告します。何かがうまくいかなければ、あなたはそれを投げる。フラスコには、特別基本例外クラスHTTPExceptionがあります。それをスローすると、適切なエラーハンドラがレンダリングされます。例については、HTTPException documentationを参照してください。また、あらかじめ定義された例外の束があり、あなたのケースではNotFoundを投げる必要があります。

+0

ありがとうございました。 –

2

エラーは発生していません。これにはabortを使用できます。

from flask import abort 

@app.route('/error/') 
def error_test(): 
    abort(404) 
関連する問題