일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- itertools
- timestamp
- SUM
- floor
- ceil
- 자료구조
- SUM()
- 세그먼트 트리
- BOJ
- flask
- datetime
- 소수
- Codeforces
- FOREIGN KEY
- mysql
- list comprehension
- 에라토스테네스의 체
- Dictionary
- enumerate
- convention
- 네이밍
- 리스트 컴프리헨션
- 파이썬
- 딕셔너리
- python
- 2557
- 큰 수 나누기
- lower_case_table_names
- 외래키
- project euler
- Today
- Total
늒네 기록
[flask] 라우팅 (1) 본문
이전 글: [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 |