公開日:5/07/2020
    シェア:

    (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)
    に変更してみましょう。

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