본문 바로가기
Flask

Flask - 다양한 routing 기법

by DGK 2021. 11. 24.

 

Flask 입문 수업을 듣고 중요한 내용을 정리했습니다.
개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다.

 

다양한 routing 기법(Python)

flask의 다양한 routing 기법을 예제를 통해 연습해보고자 한다.

 

routing 기법으로 정적 페이지 리턴하기(HTML)

from flask import Flask

app = Flask(__name__)
@app.route("/")
def hello():                           
    return "<h1>Hello World!</h1>"

@app.route("/hello")
def hello_flask():
    return "<h1>Hello Flash!</h1>"

@app.route("/first")
def hello_first():
    return "<h3>Hello First</h3>"

if __name__ == "__main__":              
    app.run(host="0.0.0.0", port="8080")

 

```

결과 :

 

http://0.0.0.0:8080/
http://0.0.0.0:8080/hello
http://0.0.0.0:8080/first

```

 

flask의 라우팅(routing) 기법으로 정적인 페이지를 리턴한 결과이다.

데코레이터를 사용해서, http://0.0.0.0:8080/, http://0.0.0.0:8080/hello, http://0.0.0.0:8080/first의 3개 url을 만든 것이다.

 

 

복잡한 routing 기법(데이터 전달)

from flask import Flask

app = Flask(__name__)
@app.route("/")
def hello():                           
    return "<h1>Hello World!</h1>"

@app.route("/profile/<username>")
def get_profile(username):
    return "profile: " + username

@app.route("/first/<username>")
def get_first(username):
    return "<h3>Hello " + username + "!</h3>"

if __name__ == "__main__":              
    app.run(host="0.0.0.0", port="8080")

 

```

결과 :

 

http://0.0.0.0:8080/
http://0.0.0.0:8080/profile/3
http://0.0.0.0:8080/first/userid

```

 

라우팅(routing) 경로 설정 시, @객체이름.route(/route 경로이름/ 원하는 값)의 코드를 사용하면 사용자가 원하는 값을 라우팅으로 호출하는 함수의 인자로 넣어줄 수 있다.

즉, 위의 예시 코드처럼 <username>자리에 특정 값을 넣으면 라우팅으로 호출하는 get_profile() 함수의 인자로 해당 값을 넣을 수 있다.

 

 

복잡한 routing 기법(데이터 타입을 설정하여 전달)

from flask import Flask

app = Flask(__name__)

def add_file(data):
    return data + 5

@app.route("/")
def hello():                           
    return "<h1>Hello World!</h1>"

@app.route("/message/<int:message_id>")
def get_message(message_id):
    return "message id: %d" % message_id   # %d 는 int, %f 는 float, %s 는 string

@app.route("/first/<int:messageid>")
def get_first(messageid):
    data = add_file(messageid)
    return "<h1>%d</h1>" % (data)


if __name__ == "__main__":              
    app.run(host="0.0.0.0", port="8080")

 

```

결과 :

 

http://0.0.0.0:8080/
http://0.0.0.0:8080/message/10
http://0.0.0.0:8080/first/10

```

 

라우팅(routing) 경로를 설정하면서, 원하는 값을 인자로 받는 경우 해당 인자의 데이터 타입을 설정할 수 있다.

만약, 데이터 타입을 별도로 설정하지 않으면 기본적으로 문자열 데이터 타입으로 설정된다.

 

 

댓글