English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Flask 리디렉션과 오류

Flask 클래스는 redirect() 함수를 가지고 있습니다. 호출할 때, 그것은 응답 객체를 반환하고 사용자를 지정된 상태 코드를 가진 다른 목적지로 리디렉션합니다.

redirect() 함수의 원형은 다음과 같습니다 -

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ko.oldtoolbag.com
# Date : 2020-08-08
Flask.redirect(location, statuscode, response)

위의 함수에서 -

location 파라미터는 응답이 리디렉션되어야 하는 URL입니다. statuscode 파라미터는 브라우저의 헤더에 전송되며 기본적으로302。 response 파라미터는 응답을 인스턴스화하는 데 사용됩니다.

다음 상태 코드는 표준화되었습니다 -

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이는 '找到' 페이지를 나타냅니다.

다음 예제에서 redirect() 함수는 로그인 시도가 실패할 때 로그인 페이지를 다시 표시하는 데 사용됩니다.

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ko.oldtoolbag.com
# Date : 2020-08-08
from flask import Flask, redirect, url_for, render_template, request
 # Flask 애플리케이션 초기화
 app = Flask(__name__)
 @app.route('/')
 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() 함수를 가지고 있습니다.

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ko.oldtoolbag.com
# Date : 2020-08-08
Flask.abort(code)

code 매개변수는 다음 값 중 하나를 사용합니다 -

400 - 誤ったリクエスト에 401 - 認証されていないため 403 - 禁止されています 404 - 見つかりません 406 - 受け入れられません 415 - 불支持的メディ어タイプ용 429 - 요청이 많습니다

위의 코드의 login() 함수에 일부 미세한 수정을 합니다. "Unauthourized" 페이지를 다시 로그인 페이지를 다시 표시하는 대신 표시하려면 그것을 중지(401) 호출.

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ko.oldtoolbag.com
# Date : 2020-08-08
from flask import Flask, redirect, url_for, render_template, request, abort
 app = Flask(__name__)
 @app.route('/')
 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)