본문 바로가기
PRACTICE/Basic

[Flask] Redirect & Errors 예제

by 1005 2020. 9. 24.

 

 

Flask – Redirect & Errors - Tutorialspoint

Flask – Redirect & Errors Flask class has a redirect() function. When called, it returns a response object and redirects the user to another target location with specified status code. Prototype of redirect() function is as below − Flask.redirect(locat

www.tutorialspoint.com

 

< 폴더 경로 >

 

 

< app.py >

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from flask import Flask, redirect, url_for, render_template, request
# Initialize the Flask application
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' : 
      # post로 들어오면서 username값이 admin일 때.
      return redirect(url_for('success'))
   else:
      return redirect(url_for('index'))
 
@app.route('/success')
def success():
   return 'logged in successfully'
    
if __name__ == '__main__':
   app.run(host='0.0.0.0', port = 80, debug = True)

 

 

admin 이외에 값을 입력할 경우

redirect(url_for('index')) 코드로 인하여 현재 페이지로 이동된다.

브라우저상에서는 새로고침 버튼(F5)을 누른 것같이 보인다.

 

 

 

admin일 때만 로그인 성공!

 

 

 

 

 

 

< app2.py >

 

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('/')
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#내장되어있는 abort함수를 통해서 간단한 에러메세지창을 출력함. 
   else:
      return redirect(url_for('index'))
 
@app.route('/success')
def success():
   return 'logged in successfully'
    
if __name__ == '__main__':
   app.run(host='0.0.0.0', port = 80, debug = True)

 

abort함수에서 사용할 수 있는 Code parameter

 

admin값 이외에 값을 입력할 시 abort함수로 인해 에러 메세지 창이 출력된다.

admin을 입력하면 app.py코드와 같은 결과값을 출력한다. 

 

 

 

댓글