Flaskでredirect機能を実装する方法を解説する

スポンサーリンク

この記事では、flask redirectについて学び、それをどのようにアプリケーションで使用するかを学びます。

スポンサーリンク

なぜリダイレクトを設定する必要があるのでしょうか?

実装に入る前に、まずリダイレクトとは何なのかを知っておきましょう

その名が示すように、リダイレクト機能は、基本的に呼び出されると、ウェブページを別のURLにリダイレクトします。

これは、Webアプリケーションの重要な部分であり、アプリケーションの効率も向上させます。

  • Twitterを例にとると、まだログインしていない場合、TwitterのURL(www.twitter.com)を押すと、まずログインページにリダイレクトされます。ここで、リダイレクト機能がその役割を果たす。
  • 同様に、オンライン決済の際も、決済が完了すると、確認ページにリダイレクトされます。
  • リダイレクトのもう一つの利点は、URL短縮に役立つことです。例えば、https://bit.ly。例えば、。ここでは、短いURLを入力すると、元の長いURLにリダイレクトされます。

さて、リダイレクトが使われる理由がわかったところで、実践編に移りましょう。

Flask のリダイレクトを実装する

では、Flask の redirect 関数を使って、ちょっとしたアプリケーションをコーディングしてみましょう。

その前に、redirect 関数の構文を見ておきましょう。

1. Flask の redirect 属性のシンタックス

redirectの構文です。

redirect(location, code, response = None)

ここで

  • location: 最終的なウェブページのターゲット位置
  • ステータスコード。HTTPリダイレクトのステータスコードで、アクションの出力を表します。デフォルトは302
  • Response: レスポンス:レスポンスを開始するときに使用するレスポンスコール。

最後の1つについては、今はあまり気にする必要はないでしょう。

他のステータスコードのいくつかは、次のとおりです。

| ステータスコード:HTTPの意味
| — | — |
| 300|複数の選択肢
| 301|恒久的に移動しました。

注:リダイレクト属性を使用する前に、まずリダイレクト属性をインポートする必要があります。

from flask import redirect

2. リダイレクトのエラー処理

Flask には、リダイレクトに失敗したときのために abort() 関数も用意されています。

abort() 関数のシンタックスは以下の通りです。

abort(<error_code>)

各種エラーコードは以下の通りです。

エラーコード 意味
400|不正なリクエスト
401|認証されていません
403|フォービドゥン
404|見つかりません
406 受け入れられません
415|メディアタイプが未対応です。
429 リクエストが多すぎます


Error Codes注:この属性も最初にインポートする必要があります。

from flask import abort

3. アプリケーションのコード

では、次のコード例を考えてみましょう。

from flask import Flask,render_template,request,redirect
 
app = Flask(__name__)
 
@app.route('/form')
def form():
    return render_template('form.html')
 
@app.route('/verify', methods = ['POST', 'GET'])
def verify():
    if request.method == 'POST':
        name = request.form['name']
        return redirect(f"/user/{name}")
 
@app.route('/user/<name>')
def user(name):
    return f"Your name is {name}"
 
 
app.run(host='localhost', port=5000)

ここで

  • フォームビューは、単にフォームテンプレートをユーザーに表示します。
  • ユーザーがフォームを送信すると、フォームのデータがリクエストと共に検証ビューに送信されます。(form.html – action 属性を見てください)
  • Verify Viewは、フォームから名前データを取り出し、ユーザーをUser Viewにリダイレクトします(名前データも一緒に)。

構文が分からない場合は、Flask入門の記事を参照してください。

form.htmlは以下の通りです。

<form action="/verify" method = "POST">
    <p>name <input type = "text" name = "name" /></p>
    <p><input type = "submit" value = "Submit" /></p>
</form>

Flaskのフォームを使ってユーザーから入力を受け取り、それをWebページにリダイレクトして名前を返しています。

ここで、シーケンスは次のようになります。

  • フォーム機能でフォームを表示します。
  • ユーザーが名前を送信すると、verify関数がFormから名前を取り出し、User関数にリダイレクトします。
  • User 関数は引数として名前を受け取り、ウェブページに表示します。

4. コードの実装

サーバを起動して確認してみましょう

Form
Form

投稿する

Redirect
Redirect

これで完了です。

名前が表示されるようになりました。

まとめ

このチュートリアルは以上です。

練習として、あなたのコードにどのようにabort関数を含めるか考えてみてください。

では、また次の記事でお会いしましょう。

タイトルとURLをコピーしました