라우팅
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 | 정수 |
float | int와 비슷하지만 소수점 값을 받는다 |
path | default와 비슷하지만 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/라고 입력했을 때
'기초공부 > WEB' 카테고리의 다른 글
[Flask]빠르게 시작하기 - HTTP 메소드 (0) | 2019.05.20 |
---|---|
[Flask]빠르게 시작하기 - URL 생성 (0) | 2019.05.20 |
[Flask]빠르게 시작하기 - 디버그 모드 (0) | 2019.05.20 |
[Flask]빠르게 시작하기 - 기본 애플리케이션 (0) | 2019.05.20 |
SQL INJECTION (0) | 2019.05.13 |