(Flask)のチュートリアルをやってみる!リダイレクトとエラーページ


続いてのチュートリアル・クイックスタートはリダイレクトとエラーページです。
といってもリダイレクトは既に使ったことがありますが、改めてここで復習です。

リダイレクト

アクセスがあったときに、指定の処理に飛ばすことができます。
では、コードを見てみましょう。
#-----リダイレクト-----    
@app.route("/re_direct/")
def re_direct ():
    return redirect(url_for('up_get'))
今回のコードは短くてわかりやすいですね。
にアクセスをすると自動的に
の処理ににリダイレクトされます。

return redirect(url_for('〇〇'))の〇〇にリダイレクト先を入れてあげます。
このとき、移動先のページではなく「処理」の名前を入れてあげます。


エラーページ

続いて、エラーページも作っていきます。
公式のサンプルではうまく動かないので、最初にエラーページを作っておきます。
templatesの中に「err_page.html」のファイルを作ります。
「err_page.html」には次のソースを入れておきます。
<!doctype html>
<h1>エラーです</h1>
<p>{{ message }}</p>
 

では、welcome.pyに入れるコードを見ていきます。
@app.route("/err_test/")
def err_test():
    abort(401)
    
@app.errorhandler(401)
def err_page(error):
    return render_template('err_page.html',message ='401')
まず最初に気になるのが「abort(401)」です。

こちらはエラーを無理やり発生させるコードで401のエラー(未認証エラー)を発生させています。

続いて、「return render_template('err_page.html',message ='401')」で作ったエラーページを表示して「messageに401の数字を表示させるよ」というコードを入れました。

http://127.0.0.1:5000/err_test/にアクセスしてみましょう、



作成したエラーページが表示されました。

追加で    
@app.errorhandler(500)
def err_page_500(error):
    return render_template('err_page.html',message ='500')
を入れて
@app.route("/err_test/")
def err_test():
    abort(401)
@app.route("/err_test/")
def err_test():
    abort(500)
に変更してみましょう。

が表示されれば成功です。
このように、例外エラーが起きた場合などにエラーページを表示できるようになります。