본문으로 바로가기

파이썬 Flask 라우팅(route) 알아보기

category Application/Flask 2020. 8. 20. 22:05

 

 

예제1

 

Method Filtering 에 대한 예제입니다.

요청을 허용하는 Method 를 지정할 수 있습니다.

from flask import Flask, Response, make_response

app = Flask(__name__)

@app.route('/req', methods=['GET', 'POST'])
def res():
    print()
    return 'res'

@app.route('/postReq', methods=['POST'])
def pr():
    print()
    return 'pr'

@app.route('/')
def index():
    return 'hello'

if __name__ == '__main__':
    app.run(debug=True)
127.0.0.1 - - [20/Aug/2020 19:49:16] "GET /req HTTP/1.1" 200 -
127.0.0.1 - - [20/Aug/2020 19:49:28] "GET /postReq HTTP/1.1" 405 -

127.0.0.1 - - [20/Aug/2020 19:49:48] "POST /postReq HTTP/1.1" 200 -

 

 

예제2

 

URL 에 대한 처리 예제입니다.

예를들어 다음과 같은 경우, 요청한 페이지에 대한 컨텐츠를 반환할 수 있습니다.

from flask import Flask, Response, make_response

app = Flask(__name__)

@app.route('/content/<page>')
def content(page):
    return f"{page} page, content"

@app.route('/')
def index():
    return 'hello'

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

 

 

 

 

위 같은 상황(Not Found)의 대한 방안으로, Default 는 다음과 같이 사용합니다.

from flask import Flask, Response, make_response

app = Flask(__name__)

@app.route('/content', defaults={'page': '1'})
@app.route('/content/<page>')
def content(page):
    print(f"{page}'content")
    return f"{page} page, content"

@app.route('/')
def index():
    return 'hello'

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

 

 

 

예제3

 

Redirect 처리는 다음과 같이 데코레이터 혹은 함수 내에서 처리할 수 있습니다.

from flask import Flask, Response, make_response
from flask import redirect

app = Flask(__name__)

@app.route('/')
def index():
    return 'index'

@app.route('/re', redirect_to='/target')
@app.route('/target')
def target():
    return 'ok'
127.0.0.1 - - [20/Aug/2020 21:00:08] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [20/Aug/2020 21:00:17] "GET /re HTTP/1.1" 301 -
127.0.0.1 - - [20/Aug/2020 21:00:17] "GET /target HTTP/1.1" 200 -

 

from flask import Flask, Response, make_response
from flask import redirect

app = Flask(__name__)

@app.route('/')
def index():
    return 'index'

@app.route('/re')
def re():
    return redirect('/target')

@app.route('/target')
def target():
    return 'ok'
127.0.0.1 - - [20/Aug/2020 21:03:20] "GET /target HTTP/1.1" 200 -