Flask는 URL에 변수를 할당하여 동적으로 만들수있다.
방법은 원하는 변수이름에 "<>"를 붙히면 된다.
다음 예시를 보자.
/hello/<name>
여기서 <name>
는 URL에 들어가는 변수이다.
from flask import Flask
app = Flask(__name__)
@app.route('/hello/<name>')
def hello_name(name):
return 'Hello %s!' % name
if __name__ == '__main__':
app.run(debug = True)
http://localhost:5000/hello/example_name
URL을 브라우져를 통해 접속하면 hello_name
이라는 함수가 실행되어 다음에 아웃풋이 나올것이다.
Hello example_name!
추가적으로, 다음의 변수를 변환해주는 컨버터들이 있다.
Converters | Description |
---|---|
int | accpets integer |
float | for floating point value |
path | accepts slashes used as directory separator character |
다음 코드는 보면 모든 컨버터들을 사용한 예시이다.
from flask import Flask
app = Flask(__name__)
@app.route('/blog/<int:postID>')
def show_blog(postID):
return 'Blog Number %d' % postID
@app.route('/rev/<float:revNo>')
def revision(revNo):
return 'Revision Number %f' % revNo
if __name__ == '__main__':
app.run()
다음은 브라우져에서 위 코드에서 명시된 URL들로 접속하였는때 결과들이다.
URL | Converter | Output | Actiavted function |
---|---|---|---|
http://localhost:5000/blog/1 | int | Blog Number 11 | show_blog() |
http://localhost:5000/rev/1.1 | float | Revision Number 1.100000 | revision() |
Flask
의 이러한 URL rules 들은Werkzeug's routing module
을 기반해있다.
a/b/c
vs a/b/c/
이 둘은 비슷해 보이지만 다르게 동작한다.다음 코드를 보자.
from flask import Flask
app = Flask(__name__)
@app.route('/flask')
def hello_flask():
return 'Hello Flask'
@app.route('/python/')
def hello_python():
return 'Hello Python'
if __name__ == '__main__':
app.run()
위 두 URL rules 들은 비슷해보지만. 두 번째는 canoncial URL
이된다. 아래의 테이블로 차이점을 보자.
URL | activatied function | output |
---|---|---|
http://localhost:5000/flask | hello_flask | Hello Flask |
http://localhost:5000/flask/ | None | 404 Not Found |
http://localhost:5000/python | hello_python | Hello python |
http://localhost:5000/python/ | hello_python | Hello python |