파이썬(Python)/Flask

파이썬 Flask 기능 정리 - route, 변수(variable)<괄호>로 보내기, url 표기 방법

끄적끄적아무거나 2021. 1. 27. 19:08
반응형

참조 링크 (link)>>

flask.palletsprojects.com/en/1.1.x/quickstart/

 


 

1. Route 기능 

 

라우트는 외부 웹브라우져에서 웹서버로 접근 시 해당 주소로 입력을 하게 되면 특정 함수가 실행되게 도와주는 기능을 한다.

아래 예제 코드는 /hello 라는 주소에 접근하면 return 으로 'Hello, World' 을 보낸다. 

 

코드 >>

from flask import *

#########################################################
# Flask 선언
app = Flask(__name__, template_folder="templates")

@app.route('/hello')
def hello():
    return 'Hello, World'

if __name__ == "__main__":
    app.run(host='0.0.0.0', debug=True, port=9999)

 

결과>>

 


 

2. 웹브라우저를 통해 변수 보내는 방법

 

페이지를 넘기거나 할때 변수 정보만 보내는 경우가 있다.

파이썬 flask에서 변수를 받을 때 주의할 점은 <> 화살표 괄호 안에 받는 형태를 정의해야한다. 그리고 변수의 형태를 정의하지 않으면 기본값은 string으로 인식되어 간다. 

아래 테이블은 사용할 수 있는 변수 타입니다.

예제 코드를 통해 결과를 확인해 보자.

 

코드 >>

from flask import *
from markupsafe import escape

#########################################################
# Flask 선언
app = Flask(__name__, template_folder="templates")

@app.route('/user/<username>')
def show_user_profile(username):
    # show the user profile for that user
    return 'User %s' % escape(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

@app.route('/path/<path:subpath>')
def show_subpath(subpath):
    # show the subpath after /path/
    return 'Subpath %s' % escape(subpath)


if __name__ == "__main__":
    app.run(host='0.0.0.0', debug=True, port=9999)

 

결과>>

 


3. url 표기 방법

 

url은 route뒤에 괄호( ) 안에 넣어준다. 이때 url 끝에 슬래시 (trailing slash) 를 넣지 않으면 문제가 발생할 수 있다.

아래 예제 코드에서 project 뒤에 슬래시가 있으면 명확한 주소 인식하게 된다. 그래서 만일 사용자가 웹브라우져로 해당 url 에 접근 시 http://localhost:9999/projects/ 로 접근해도 되고 http://localhost:9999/projects 로 접근해도 된다. 

후자의 경우 웹브라우져에서 자동으로 / 를 붙여 준다. 

about의 경우 http://localhost:9999/about 의 경우만 접근이 가능하고 http://localhost:9999/about/ 은 404 에러를 띄우게 된다.

 

코드>>

from flask import *
from markupsafe import escape

#########################################################
# Flask 선언
app = Flask(__name__, template_folder="templates")

@app.route('/projects/')
def projects():
    return 'The project page'

@app.route('/about')
def about():
    return 'The about page'


if __name__ == "__main__":
    app.run(host='0.0.0.0', debug=True, port=9999)

 

결과>>

 

 

반응형