[언어]/Web

[Flask] Flask 기본 사용법 : VScode Flask 실습 코드, URL에 웹페이지 연결, 동적 URL, HTML 파일 렌더링

seom-j 2023. 7. 20. 23:51

 

📌 URL 연결

@app.route('/경로')

경로는 반드시 /로 시작

flask run시 할당받는 링크의 뒤에 해당 내용들을 덧붙여 페이지 이동 가능

 

[📃 app.py 코드]

from flask import Flask
app = Flask(__name__)

@app.route('/') # 초기 화면 구성
def hello():
    return 'hello flask'

@app.route('/about') # /about으로 이동시 출력되는 화면 구성
def about():
    return 'flask <br> python framework'

@app.route('/contact') # /contact으로 이동시 출력되는 화면 구성
def contact():
    return 'tel : 012-345-6789'

 

[📃 터미널 코드]

flask run

 

⬇️ 링크 이동 후 링크를 수정함에 따라 화면이 전환됨을 확인할 수 있음

 

 

📌 동적 URL

@app.route('/경로') 동일

그러나 경로에 <변수명>을 작성하여 변수 활용

 

[📃 app.py 코드]

# 변수 설정 후, f-string 포맷을 활용해서 문자열에 해당 변수 대입하여 활용
from flask import Flask
app = Flask(__name__)

@app.route('/') # 초기 화면 구성
def hello():
    return 'hello flask'

@app.route('/<user_name>') # /<user_name>으로 이동시 출력되는 화면 구성
def name(user_name):
    return f'hello {user_name}' # user_name은 "변수"

 

[📃 터미널 코드]

flask run

 

⬇️ 링크 이동 후 링크를 수정함에 따라 해당 변수명을 입력하여 화면이 전환됨을 확인할 수 있음

 

 

📌 HTML 렌더링

render_template(’html 파일명’)

render_templates 라이브러리를 import하여 렌더링

url의 요청에 따라 html 파일을 전송

 

[📃 app.py 코드]

from flask import Flask, render_template
app = Flask(__name__)

@app.route('/')
def hello():
    return render_template('main.html')# 초기 화면에 main.html 렌더링

 

< html 파일 렌더링시 유의사항 >

html파일은 “templates”라는 폴더 내에, 이미지는 “static”라는 폴더 내에 존재해야함

그렇지 못할 경우 아래와 같은 Internal Server Error 발생

⬇️ 올바른 파일 경로 예시

 

[📃 main.html 코드]

<body>
    <div>
        <p>Do you like fruits?</p>
        <ul>
            <li>apple</li>
            <li>banana</li>
            <li>orange</li>
            <li>mango</li>
            <li>melon</li>
        </ul>
    </div>
</body>
</html>

 

[📃 터미널 코드]

flask run

 

⬇️ main.html파일의 렌더링 결과를 확인할 수 있음

 

< 실시간 수정 코드 적용 >

원래는 코드를 수정했을 경우 ctrl+c로 빠져나온 후 flask를 다시 실행해야 변경사항이 적용되나,

아래의 코드를 통해 실시간으로 수정된 코드를 웹에 적용할 수 있음

[📃 app.py 코드]

if __name__ == '__main__':
    app.run(debug=True)