Flask リダイレクト

Salman Mehmood 2022年7月12日
Flask リダイレクト

この説明では、redirect() 関数を使用してユーザーをリダイレクトする方法と、Flask で複数の目的に使用する方法を学習します。

Flask の redirect() 関数を使用してユーザーをリダイレクトする

Flask では、リダイレクトはかなり簡単です。リクエストまたは API を使用して、サイト上のユーザーまたは誰かをリダイレクトするだけです。

ユーザーをリダイレクトする方法はいくつかあります。たとえば、ホームページにアクセスしてサイトにログインした場合は、メンバーシップエリアにリダイレクトするか、パスワード回復ページにリダイレクトすることができます。

一般に、リダイレクトは、サーバー側から次のページにユーザーを送信する方法です。したがって、そのページでリクエストを開始する必要はありません。

コードを書き始める前に、ここで redirect() 関数の構文を示します。

構文:

flask.redirect(location, code=302, Response=None)

最初の 2つのパラメーター、locationcode のみを使用します。location は URL であり、code はリクエストまたは redirect() レスポンスで送信される HTTP ステータスコードです。

いくつかのコードでそれを示しましょう。ここでは、Flask アプリをすばやくセットアップし、Flask のインポートから始めます。

いくつかのルートを設定します。1つは header タグを使用して index() 関数を作成し、もう 1つは特定のエンドポイントで header タグを使用する MEMBERS() 関数を作成します。

最初の例は、アプリのページ間でリダイレクトすることです。2つのビューまたは 2つのページを作成しました。インデックスに移動したユーザーが、メンバーのページに自動的にリダイレクトされるようにします。

そのため、url_for() 関数と一緒に redirect() 関数を使用します。redirect() 関数は最初のパラメーターの場所を取得します。この location パラメーターは url_for() である必要があります。

必要な url_for() 内に関数の名前を入力するだけで、MEMBERS() 関数がメンバーの URL を生成し、この index() 関数がユーザーをメンバーにリダイレクトします’ページ。

from flask import Flask, redirect, url_for

app = Flask(__name__)


@app.route("/")
def index():
    return redirect(url_for("MEMBERS"))


@app.route("/members")
def MEMBERS():
    return "<h1>Members Area</h1>"


if __name__ == "__main__":
    app.run(debug=True)

保存後、インデックスページを使用してこのアプリを実行し、そこに移動すると、メンバーのページにリダイレクトされます。

開発ツールを開き、このページを実行したときにネットワークが何を言っているかを見てみましょう。ここでインデックスをリクエストしました。これにより、ステータスは 302 になります。

302 は通常、誰かをリダイレクトするときに使用されます。メンバーのページに移動しますが、サーバーにこれを要求しませんでした。

出力:

Flask リダイレクト出力 1

2 番目のパラメータをリダイレクトとして 404 に変更することもできます。これは奇妙なことですが、どのような条件でも使用できます。インデックスに移動します。これは、ターゲット URL に自動的にリダイレクトされる必要があることを示しています。そうでない場合は、リンクをクリックしてください

これは通常、404 がリダイレクトではなくエラーに使用されるためですが、Flask によって生成されたリンクをクリックすると、メンバーのエリアに移動します。特別な理由がない限り、ステータスコードを変更する必要はありません。心に留めておきます。

from flask import Flask, redirect, url_for

app = Flask(__name__)


@app.route("/")
def index():
    return redirect(url_for("MEMBERS"), 404)


@app.route("/members")
def MEMBERS():
    return "<h1>Members Area</h1>"


if __name__ == "__main__":
    app.run(debug=True)

出力:

Flask リダイレクト出力 2

メンバーの領域ではなく、任意の URL にリダイレクトするとします。なんらかの理由でサイト外の何かにリダイレクトしたいとします。私たちの場合、それらを自動的に google.com にリダイレクトする必要があります。

from flask import Flask, redirect, url_for

app = Flask(__name__)


@app.route("/")
def index():
    return redirect("https://www.google.com")


@app.route("/members")
def MEMBERS():
    return "<h1>Members Area</h1>"


if __name__ == "__main__":
    app.run(debug=True)

出力:

Flask リダイレクト出力 3

そのプロセスの結果に応じて、それらをどこかにリダイレクトします。たとえば、ユーザー名とパスワードが有効であることがわかった場合、ログイン情報の記事データを取得します。

パスワードが正しければ、メンバーのエリアまたはユーザーに表示したい場所にパスワードをリダイレクトします。または、パスワードが間違っている場合は、パスワード回復ページにリダイレクトできます。それは完全にあなた次第ですが、リダイレクトは通常、ビューでの処理の後に行われることを知っています。

著者: Salman Mehmood
Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn

関連記事 - Python Flask Redirect