파이썬(Python)/Flask

파이썬 before_first_request, before_request, after_request 함수 쉬운 예제로 이해하기

끄적끄적아무거나 2021. 5. 21. 18:07
반응형

before_first_request, before_request, after_request 함수


before_first_request, before_request, after_request 함수 사용 방법

 

URI를 통해 접속 전 후에 사용자가 원하는 동작을 시행할 수 있다. 

 

1. Flask 내장 함수이므로 flask를 import 한다.

2. before_first_request 는 첫번째 해당 URI 접근 시 동작한다 

3. before_request URI 접근 할 때마다 동작한다.

4. after_request 는 접근 후 동작한다. return 값을 입력으로 받아 처리 가능하다.

 


예제와 결과로 이해해보기

 

코드 - test.py>>

from flask import Flask

app = Flask(__name__)

@app.route("/")
def test():
    print("No 1")
    return "No 2"

@app.before_first_request
def before_first_request():
    print("No 3")

@app.before_request
def before_request():
    print("No 4")

@app.after_request
def after_request(return_val):
    print("No 5")
    return return_val

if __name__ == "__main__":
    app.run(host='0.0.0.0', debug=True, port=9999)

 

결과 >>

* Running on http://0.0.0.0:9999/ (Press CTRL+C to quit)
No 3
No 4
No 1
No 5
127.0.0.1 - - [21/May/2021 17:57:11] "GET / HTTP/1.1" 200 -
No 4
No 1
No 5
127.0.0.1 - - [21/May/2021 18:02:52] "GET / HTTP/1.1" 200 -

그림1

 

주석>>

파이썬 코드에서 print 문에 숫자 순서를 통해 어떤 순서로 동작했는 지 알 수 있다. 우선 http://localhost:9999/ 를 웹브라우져를 통해 연결하였다. 그래서 No 3, 4, 1, 5 순서대로 값을 얻었다. 그리고 페이지는 그림1과 같이 return 값 No2를 표기 하였다.

다시 한번 http://localhost:9999/ 를 웹브라우져를 통해 연결 하니 이번에는 before_first_request 함수가 실행되지 않고 No 4, 1, 5 번만 나왔다. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형