늒네 기록

[flask] 라우팅 (1) 본문

서버 공부 기록/python flask

[flask] 라우팅 (1)

jaeha lee 2020. 10. 1. 19:55

이전 글: [flask] 시작하기

 

이전 글의 빠르게 시작하기 예제를 계속 이어서 따라가보자. 첫 helloworld 예시는 주소, 포트로만 이루어진 http://127.0.0.1:5000/ 경로에 들어가면 작동하게 되어있는데, 이는 @app.route('/')가 주소 뒤에 아무 것도 붙이지 않았을 때 해당 함수 내부에 진입하도록 해주었기 때문이다. 그렇다면, route 내에 다른 주소를 넣으면 어떨까?

1
2
3
4
5
6
7
8
9
10
11
12
13
from flask import Flask
app = Flask(__name__)
 
@app.route('/')
def hello_world():
    return 'Hello World!'
 
@app.route('/hello')
def hello():
    return 'new hello'
 
if __name__ == '__main__':
    app.run()
cs

이전의 코드에 /hello 경로로 진입했을 때 'new hello'를 출력하도록 하는 함수를 추가했다. 서버를 올리고 http://localhost:5000/hello 경로에 진입해보면, new hello를 출력하는 걸 알 수 있다.

저번에는 127.0.0.1:5000 경로로 접근하던 걸 localhost로 접근했는데, 다른 설정들을 해주지 않았다면 둘은 디폴트로 같은 경로이므로 일단은 납득하고 넘어가도록 하자.

 

그렇다면, /user/:userid 같이 특정 유저 아이디를 변수로 넣어주어서 이에 해당하는 페이지로 넘어가고 싶으면 어떻게 하면 될까? 

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
app = Flask(__name__)
 
@app.route('/')
def hello_world():
    return 'Hello World!'
 
@app.route('/hello')
def hello():
    return 'new hello'
 
@app.route('/user/<username>')
def show_user_profile(username):
    # show the user profile for that user
    return 'User %s' % username
 
@app.route('/post/<int:post_id>')
def show_post(post_id):
    # show the post with the given id, the id is an integer
    return 'Post %d' % post_id
 
if __name__ == '__main__':
    app.run()
cs

플라스크는 <> 안에 변수를 넣는 것으로 변수를 전달할 수 있다. 위의 예제를 보면, <username> 안에 jaehaaheaj같이 유저 이름을 넣어서, 즉, /user/jaehaaheaj 경로로 접근을 하면 화면에 User jaehaaheaj가 출력된다. 하지만 변수 전달은 기본적으로 string타입으로 이루어지는데, 이를 int로 받고 싶을 수도 있을 것이다. 이 경우에는 <타입:변수이름> 형식으로 타입캐스팅을 미리 해주는 것이 가능하다. 튜토리얼 페이지에 따르면 int, float, path 형식에 대한 타입 캐스팅이 가능하다고 한다.

1
2
3
4
5
6
7
@app.route('/add_string/<a>/<b>')
def add_string(a, b):
    return f'{a+b}'
 
@app.route('/add_int/<int:a>/<int:b>')
def add_int(a, b):
    return f'{a+b}'
cs

타입캐스팅이 잘 이루어지는지 확인하기 위해 위의 코드를 추가해서 테스트를 진행해보면, /add_string/1/2 경로로 들어가면 '1'+'2'의 결과인 12를 출력하는 것을 볼 수 있고, /add_int/1/2 경로로 들어가면 1+2의 결과인 3을 출력하는 것을 볼 수 있다.

반응형

'서버 공부 기록 > python flask' 카테고리의 다른 글

[flask] 파일 받아와서 저장하기 - 1  (0) 2020.10.10
[flask] 시작하기  (0) 2020.09.27
Comments