Python 3 – Flaskリダイレクトとエラー-Pythonチュートリアル

Flaskクラスには redirect() 関数。 呼び出されると、応答オブジェクトを返し、指定されたステータスコードでユーザーを別のターゲットの場所にリダイレクトします。

URLが利用できなくなった場合やユーザーがログインしていない場合など、URLをリダイレクトする必要がある場合があります。 redirect 関数を使用すると、Flaskでそれを実行できます。

関連コース: Python Flask:Flaskを使用してWebアプリを作成する

フラスコリダイレクト

リダイレクト機能

の構文 redirect() 機能は次のとおりです。

1
Flask.redirect(location, statuscode, response)

上記の関数では:

  • locationパラメータは、応答をリダイレクトするURLです。
  • ステータスコードはデフォルトでブラウザのヘッダーに送信されます302。
  • 応答パラメーターは、応答をインスタンス化するために使用されます。

ステータスコード

次のステータスコードが標準化されています。

  • HTTP 300:MULTIPLE_CHOICES
  • HTTP 301:MOVED_PERMANENTLY
  • HTTP 302:見つかりました
  • HTTP 303:SEE_OTHER
  • HTTP 304:NOT_MODIFIED
  • HTTP 305:USE_PROXY
  • HTTP 306:予約済み
  • HTTP 307:TEMPORARY_REDIRECT
  • HTTP 302:見つかりません
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from flask import Flask, redirect, url_for, render_template, request

app = Flask(__name__)

@app.route("https://pythonbasics.org/")
def index():
return render_template('log_in.html')

@app.route('/login',methods = ['POST', 'GET'])
def login():
if request.method == 'POST' and
request.form['username'] == 'admin' :
return redirect(url_for('success'))
return redirect(url_for('index'))

@app.route('/success')
def success():
return 'logged in successfully'

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

エラー

エラーコード

Flaskクラスには abort() エラーコードで機能します。

Codeパラメーターは、次のいずれかの値を取ります。

  • 400-エラー要求の場合
  • 401-認証されていない場合に使用
  • 403禁止します
  • 404-ない
  • 406-受け入れられません
  • 415-サポートされていないメディアタイプの場合
  • 429-リクエストが多すぎます

リダイレクトの例

に少し変更を加えましょう login() 上記のコードの関数。「未承認」ページを表示する場合は、呼び出しに置き換えます。 abort(401) ログインページを再表示する代わりに。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from flask import Flask, redirect, url_for, render_template, request, abort
app = Flask(__name__)

@app.route("https://pythonbasics.org/")
def index():
return render_template('log_in.html')

@app.route('/login',methods = ['POST', 'GET'])
def login():
if request.method == 'POST':
if request.form['username'] == 'admin' :
return redirect(url_for('success'))
else:
abort(401)
else:
return redirect(url_for('index'))

@app.route('/success')
def success():
return 'logged in successfully'

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

関連コース: Python Flask:Flaskを使用してWebアプリを作成する

Hope this helps!

Source link