[Flask] Variable rules

Jacob Yun·2020년 7월 3일
0

Flask

목록 보기
1/3
post-thumbnail

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!

추가적으로, 다음의 변수를 변환해주는 컨버터들이 있다.

ConvertersDescription
intaccpets integer
floatfor floating point value
pathaccepts 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들로 접속하였는때 결과들이다.

URLConverterOutputActiavted function
http://localhost:5000/blog/1intBlog Number 11show_blog()
http://localhost:5000/rev/1.1floatRevision Number 1.100000revision()

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 이된다. 아래의 테이블로 차이점을 보자.

URLactivatied functionoutput
http://localhost:5000/flaskhello_flaskHello Flask
http://localhost:5000/flask/None404 Not Found
http://localhost:5000/pythonhello_pythonHello python
http://localhost:5000/python/hello_pythonHello python
profile
정보처리 산업기능요원 재직중인 신입 개발자 입니다.

0개의 댓글