본문 바로가기

기초공부/WEB

[Flask]빠르게 시작하기 - 라우팅

라우팅

route() 데코레이터는 함수와 URL을 연결해준다.
아래는 기본적인 예제들이다

from flask import Flask
app = Flask(__name__)

@app.route('/') # 주소가 /일 때
def index() :
    return "index page"

@app.route('/hello') # 주소가 /hello일 때
def hello() :
    return "hello world"

if __name__=="__main__" :
    app.run()

변수 규칙

URL에 변수 부분을 추가하기 위해 다음과 같이 작성할 수 있다.

from flask import Flask
app = Flask(__name__)

@app.route('/index/<menu>') # menu 위치에 값을 입력 받는다
def index(menu) : # 함수의 인자에 menu 넣기
    return "index page %s" % menu # menu 포함하여 출력

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

if __name__=="__main__" :
    app.run()

제대로된 형식을 입력받았을 경우


잘못된 형식을 입력받았을 경우
<

이렇게 하면 URL을 통해 변수를 입력 받을 수 있다. 만약 형식을 지키지 않는다면 에러가 발생한다.



변수 규칙2

변수의 형식을 지정할 수 있다.

from flask import Flask
app = Flask(__name__)

@app.route('/user/<username>')
def show_user_profile(username):
    return 'User %s' % username

@app.route('/post/<int:post_id>') # 정수 형식으로 입력 받는다
def show_post(post_id):
    return 'Post %d' % post_id

if __name__=="__main__" :
    app.run()

제대로된 형식을 입력받았을 경우


잘못된 형식을 입력받았을 경우


형식에 맞는 값을 입력해야 한다. 세 가지 종류의 형식을 이용할 수 있다


int정수
floatint와 비슷하지만 소수점 값을 받는다
pathdefault와 비슷하지만 slashes 또한 허용된다


주의

from flask import Flask
app = Flask(__name__)

@app.route('/asdf/') # 뒷슬래쉬가 있을 경우
def projects():
    return 'asdf'

@app.route('/abcd') # 뒷슬래쉬가 있을 경우
def about():
    return 'abcd'

if __name__=="__main__" :
    app.run()

정규 URL은 뒤쪽에 슬래쉬('/)를 포함하므로 사용자가 뒷슬래쉬 없이 URL에 접근하면 Flask가 뒷슬래쉬를 추가한 정규 URL로 바꾼다. 그렇기 때문에 처음 두 경우는 정상적으로 출력하지만 마지막 경우에는 뒷슬래쉬 없이 접근하였으므로 Flask가 뒷슬래쉬를 추가한 결과, 정규 URL과 일치하는 라우팅 정보가 없기 때문에 에러가 발생한다. 이를 주의해야 한다.

/asdf라고 입력했을 때 /asdf/라고 입력했을 때 /abcd라고 입력했을 때 /abcd/라고 입력했을 때