[Flask]フラスコのリダイレクトとエラー

フラスコのリダイレクトとエラー

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

redirect()関数のプロトタイプは次のとおりです。

Flask.redirect(location, statuscode, response)

上記の関数では:

  • locationパラメーターは、応答のリダイレクト先のURLです。

  • ステータスコードはブラウザのヘッダーに送信されます。デフォルトは302です。

  • 応答パラメーターは、応答をインスタンス化するために使用されます。

次のステータスコードが標準化されました。

  • HTTP_300_MULTIPLE_CHOICES
  • HTTP_301_MOVED_PERMANENTLY
  • HTTP_302_FOUND
  • HTTP_303_SEE_OTHER
  • HTTP_304_NOT_MODIFIED
  • HTTP_305_USE_PROXY
  • HTTP_306_RESERVED
  • HTTP_307_TEMPORARY_REDIRECT

デフォルトのステータスコードは302で、これ「found」意味します。

Flaskクラスにはエラーコードのあるabort()関数があります

Flask.abort(code)

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

  • 400- 不正なリクエストの場合

  • 401 認証されていない-for

  • 403- 禁止

  • 404  -not未満

  • 406 示します受け入れるありません

  • 415 サポートされていないメディアタイプの古本

  • 429の  -Too多くの要求

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

Pythonファイルurl_redirect.pyを作成する

from flask import Flask, redirect, url_for, render_template, request, abort
app = Flask(__name__)

@app.route('/')
def index():
   return render_template('login.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)

url_redirect.pyファイルと同じレベルのディレクトリに新しいtemplate / login.htmlを作成します

<html>
   <body>

      <form action = "http://localhost:5000/login" method = "post">
         <p>Enter Name:</p>
         <p><input type = "text" name = "username" /></p>
         <p><input type = "submit" value = "submit" /></p>
      </form>

   </body>
</html>

Pythonファイルを実行し、ブラウザを開いてhttp://127.0.0.1:5000/にアクセスします。 

おすすめ

転載: blog.csdn.net/u013066730/article/details/108362286
おすすめ