パラメーターを指定して Flask の redirect() 関数を使用する

Haider Ali 2023年6月21日
パラメーターを指定して Flask の redirect() 関数を使用する

ここでは、Flask の redirect() 関数について説明します。 そのパラメーターは何ですか?どのように使用され、実行するには何が必要ですか? それでは、それについて学び始めましょう。

パラメータ付きのFlask redirect()関数を使用する

redirect() は、ユーザーが特定の URL にリダイレクトし、エラーとして知られるステータス コードを割り当てるために明示的に使用される Flask 関数またはユーティリティです。 error と redirect() は一緒に使われますが、このガイドでは取り上げません。

この関数が呼び出されると、ターゲットの場所にリダイレクトされ、ステータス コードと共に応答オブジェクトが返されます。

Web サイトがリクエストを受信すると、HTTP コードが生成され、処理後に 3 桁のコードで応答します。

redirect() 関数の働きをさらに理解するために例を見てみましょう。 ここでは、簡単な説明のためにコード スニペットを示しています。 完全なコードは、このガイドの最後に記載されています。

@app.route("/")
def index():  # An index page will be created where a form will be shown and tells the user to enter a name.
    return """<form action="/goto" method="POST">
            <label>Enter Your Name</label>
            <input name="username" required>
            <input type="submit" value="Submit">
        </form>"""


@app.route("/goto", methods=["POST"])
def redirector():  # a redirector function created
    username = request.form.get("username")  # this requests the name
    return redirect(
        url_for("user", name=username)
    )  # this is the redirect function being implemented.

コードの関数 indexredirector を見てみましょう。

index() 関数は、フォームを作成するという 1つの目的のために作成されます。 フォームを使用して、新しい Web サイトの URL として使用される任意の名前を入力できます。

redirector() 関数には、usernameredirect 関数の 2つの部分が含まれます。 ここでの username は、フォームの名前を要求するために使用されます。 ここに入力されたものは、フォームがそこで作成されるときに index() 関数にリンクされます。

2 番目の部分 redirect() は、パラメーターで指定された Web サイトにリダイレクトします。 この場合、Web サイトは url_for() 関数を使用して作成されます。

関数 url_for() を使用して、リダイレクトする URL を作成します。 この例では、公式に作成された URL は使用していません。 代わりに、独自の URL を使用しています。

いくつかのキーワード引数は URL ルールの変数を表し、最初の引数は関数の名前です。 クエリ パラメータとして、変数が不明な URL が追加されます。

それでは、出力を見てこの例を理解しましょう。 この例では、システムがユーザーに名前を入力してそのページにリダイレクトするよう求める index ページを作成しました。

Flask Redirect With Parameters - Form

ここで任意の名前を入力すると、その名前で作成されたページにリダイレクトされます。 たとえば、Aria という名前を入力します。

パラメーター付きの Flask リダイレクト - リダイレクトされたページ

ご覧のとおり、Aria という名前のページに正常にリダイレクトされました。

次に、要求されたときに google.com にリダイレクトする別の例を見てみましょう。

@app.route("/goto1")  # \goto1 will be used as a keyword to redirect.
def redirector_1():
    return redirect("https://www.google.com")  # will redirect to google

この例では、URL \goto1 を入力する必要があります。 google.com にリダイレクトされるために必要なことはそれだけです。

URL の入力方法は次のとおりです。

The http address provided by the system/goto1

http://127.0.0.1:5000/goto1 #accoridng to example

以下の完全なコードには、redirect 関数が使用される両方の方法が含まれています。

from flask import Flask, request, redirect, url_for

app = Flask(__name__)


@app.route("/")
def index():
    return """<form action="/goto" method="POST">
            <label>Enter Your Name</label>
            <input name="username" required>
            <input type="submit" value="Submit">
        </form>"""


@app.route("/goto", methods=["POST"])
def redirector():
    username = request.form.get("username")
    return redirect(url_for("user", name=username))


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


@app.route("/user/<name>")
def user(name):
    return f"Hello {name}"


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

上記のライブラリ、Flaskrequestredirect、および url_for をインポートする必要があります。 これらをインポートしないと、このコードで使用した関数を使用できません。

このコードによると、request は新しい Web サイトを作成するための名前を要求するのに役立ち、redirect はパラメーターで指定した特定の Web サイトにリダイレクトできるようにします。

最後になりましたが、url_for を使用すると、index 関数のフォームを使用して作成された名前を使用して、新しい Web サイトを作成できます。

著者: Haider Ali
Haider Ali avatar Haider Ali avatar

Haider specializes in technical writing. He has a solid background in computer science that allows him to create engaging, original, and compelling technical tutorials. In his free time, he enjoys adding new skills to his repertoire and watching Netflix.

LinkedIn

関連記事 - Python Flask Redirect