この記事では、さまざまな種類の HTTP エラーを扱い、次にこれらのエラーに対処するために Flask のエラー処理を使用する方法を学びます。
なぜエラー処理が必要なのか?
Web アプリケーションのエラーは、いくつかの理由で発生する可能性があります。
アプリ内の不正なコードや、ユーザーによる不正なリクエスト、サーバーのダウンタイムなどが原因です。
したがって、これらのエラーを処理することは非常に重要です。
ブラウザはデフォルトでHTTPエラーを処理してくれますが、その出力はあまり美的ではありません。
例えば、Flaskアプリケーションを構築しているときに、500 internal server errorに出くわしたことがあるかもしれません。
@app .errorhandler(status_code)
def function_name(error):
return render_template( 'xyz.html' ),status_code
|
このとき、無関係なデータを表示するのではなく、エラーの原因を示すシンプルな行があれば十分です。
そこで、Flask Error Handlers の出番です。
Flaskのエラーハンドラを使うことで、以下のことが可能になります。
-
- エラーページの見た目をカスタマイズします。
-
- ユーザに関連するデータのみを表示します。
この記事もチェック:Flaskにおけるアプリケーションコンテキストとリクエストコンテキストを解説する
よくあるHTTPエラー
よく発生するエラーには、以下のようなものがあります。
| HTTPエラーコードの意味
| 301|恒久的に移動されました。
| 302|一時的に移動されました。
HTTP Errors## Flask のエラーハンドリングでハンズオン
エラーコード – 404 と 500 は、私たちが毎日対処する最も一般的なエラーです。
そこで、このセクションでは、404 と 500 のためのシンプルなエラーハンドラを構築します。
他のエラーの構文も全く同じです。
flaskでは、組み込みのerror_handlerデコレータを使用します。
そのシンタックスは
from flask import Flask, render_template
app = Flask(__name__)
@app .route( '/blogs' )
def blog():
return render_template( 'blog.html' )
#Handling error 404 and displaying relevant web page @app .errorhandler( 404 )
def not_found_error(error):
return render_template( '404.html' ), 404
#Handling error 500 and displaying relevant web page @app .errorhandler( 500 )
def internal_error(error):
return render_template( '500.html' ), 500
#app.run(host='localhost', port=5000) app.run(host = 'localhost' , port = 5000 )
|
したがって、次のようなFlaskアプリケーションの例を考えてみましょう。
< h2 >Welcome to the Blog</ h2 >
|
Blog.htmlです。
< h2 >The webpage you are trying is not found</ h2 >
<img src = "{{url_for('static','images/opps.jpg') }}" |
404.htmlファイル。
< h2 >Something Went Wrong</ h2 >
|
ここでは、404のWebページにも画像を表示しています。
同様に、500.htmlファイルです。
この記事もチェック:Flaskでcssや画像などの静的ファイルを出力する方法を解説する
インプリメンテーション
サーバを起動し、任意の非実在URLエンドポイントにアクセスします。
500エラーになるように、render_template()の数文字を意図的にremder_template()と書き換えます。
サーバーを再起動し、”/blogs “のURLにアクセスします。
500エラーのページが表示されます。
完璧だ!
まとめ
以上です。
これで、エラーページもテーマに合わせてカスタマイズできるようになりました。
Flask についてもっと知りたい方は、他の Flask チュートリアルを参照してください。
それでは、また次の記事でお会いしましょう ハッピーコーディング