HOWTO · Flask

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

この記事では、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 サイトを作成できます。