Backend/Python

Python Flask 웹 페이지 제작(1) - 구조, Route

땅지원 2021. 12. 21. 18:50

Flask

Python으로 웹 개발을 할 때 많이 쓰이는 프레임워크로는 Django이지만 너무 무겁고 기능이 많아서 복잡

라이트한 개발을 위해 사용되는 Flask에 대해 공부 및 정리를 해보려고 한다.

Content

 - Route - URL에 웹페이지 연결하기(고정 URL)

 - Route - URL에 웹페이지 연결하기(동적 URL)

 - HTML 렌더링

 

Directory

project

└static

    └style.css

    └ ...

└templates

    └index.html

    └ ...
    
└run.py

run.py

from flask import Flask

app = Flask(__name__)

@app.route('/')
def home():
    return 'Hello, World!'
    
if __name__ == '__main__':
    #app.run('127.0.0.1', 5000, debug=True)
    app.run(debug=True)

app.run() 괄호 안에 debug=True 라고 명시하면 해당 파일의 코드를 수정할 때 마다 Flask가 변경된 것을 인식하고 다시 시작한다.

 

Route - URL에 웹페이지 연결하기(고정 URL)

URL을 방문 할 때 준비된 함수가 트리거되도록 바인딩 하기 위해 route() 데코레이터를 사용한다.

 

*** 데코레이터란?

- @로 시작하며 함수를 수정하지 않은 상태에서 추가 기능을 구현할 때 사용

from flask import Flask

app = Flask(__name__)

@app.route('/')
@app.route('/home')
def home():
    return 'Hello, World!'
    
@app.route('/user')
def user():
    return 'Hello, User!'
    
if __name__ == '__main__':
    app.run(debug=True)

http://127.0.0.1:5000/ 뒤에 '/home'이라고 해도 동일하게 Hello world! 가 출력되는 페이지가 뜰 것이고

'/user'로 접속하면 Hello user!가 뜰 것 이다.

 

@app.route('/경로') 를 쓸 때 URL 경로는 반드시 “/” (슬래시)로 시작해야 한다.

 

Route - URL에 웹페이지 연결하기(동적 URL)

from flask import Flask

app = Flask(__name__)

@app.route('/')
@app.route('/home')
def home():
    return 'Hello, World!'
    
@app.route('/user/<user_name>/<int:user_id>')
def user(user_name, user_id):
    return f'Hello, {user_name}({user_id})!'
    
if __name__ == '__main__':
    app.run(debug=True)

'/user/유저이름/유저아이디' 형식의 URL을 입력 받았을 때 유저이름과 유저아이디를 활용한 내용의 HTML 문서를 반환 가능

<int:user_id> 구문은 <converter : variable_name> 구문을 사용하여 URL에서 받은 변수 타입을 변형

<converter types>

● string(default) : slash가 포함되지 않은 문자열

● int

● float

● path : slash가 포함된 문자열