Flask リダイレクト
この説明では、redirect()
関数を使用してユーザーをリダイレクトする方法と、Flask で複数の目的に使用する方法を学習します。
Flask の redirect()
関数を使用してユーザーをリダイレクトする
Flask では、リダイレクトはかなり簡単です。リクエストまたは API を使用して、サイト上のユーザーまたは誰かをリダイレクトするだけです。
ユーザーをリダイレクトする方法はいくつかあります。たとえば、ホームページにアクセスしてサイトにログインした場合は、メンバーシップエリアにリダイレクトするか、パスワード回復ページにリダイレクトすることができます。
一般に、リダイレクトは、サーバー側から次のページにユーザーを送信する方法です。したがって、そのページでリクエストを開始する必要はありません。
コードを書き始める前に、ここで redirect()
関数の構文を示します。
構文:
flask.redirect(location, code=302, Response=None)
最初の 2つのパラメーター、location
と code
のみを使用します。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
は通常、誰かをリダイレクトするときに使用されます。メンバーのページに移動しますが、サーバーにこれを要求しませんでした。
出力:
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)
出力:
メンバーの領域ではなく、任意の 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)
出力:
そのプロセスの結果に応じて、それらをどこかにリダイレクトします。たとえば、ユーザー名とパスワードが有効であることがわかった場合、ログイン情報の記事データを取得します。
パスワードが正しければ、メンバーのエリアまたはユーザーに表示したい場所にパスワードをリダイレクトします。または、パスワードが間違っている場合は、パスワード回復ページにリダイレクトできます。それは完全にあなた次第ですが、リダイレクトは通常、ビューでの処理の後に行われることを知っています。
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