본문 바로가기

Python/Flask

[Python] Flask로 기본적인 웹 서버 시작하기

Flask는 Python의 대표적인 웹 프레임워크 중 하나이다.

주로 함께 언급되는 Django 보다 가볍고 상대적으로 더 빠르게 서버를 구동시킬 수 있다. 또한 JinjaWerkzeug가 포함되어 있고 기본적으로 필요한 기능만 제공하기 때문에 코드가 조금이나마 더 간결하다.

 


설치

먼저 Flask를 설치하도록 하자.

 

$ pip install flask

 

설치가 끝났다면 flask --version 명령어를 입력하면 다음과 같은 결과가 나온다

 

Python 3.8.1
Flask 1.1.2
Werkzeug 1.0.1

 


첫 Flask 애플리케이션 실행하기

이제 원하는 위치에 app.py 파일을 생성하고 다음 코드를 작성하자

 

from flask import Flask

app = Flask(__name__)


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


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

 

코드를 다 작성했다면 다음 명령어를 통해 서버를 구동해보자.

 

$ python app.py

 

그럼 다음과 같은 출력과 함께 서버가 시작된다.

 

* Serving Flask app "app" (lazy loading)
* Environment: production
  WARNING: This is a development server. Do not use it in a production deployment.
  Use a production WSGI server instead.
* Debug mode: off
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)

 

이제 http://localhost:5000 주소로 접속하면 화면에 Hello World 가 출력되는것을 볼 수 있다.

 


HTML 파일 출력하기

이제 서버를 구동하는데에는 성공했으니 HTML 파일을 화면에 출력해보자.

먼저 templates 폴더를 생성하고 그 안에 index.html 파일을 만든 후 아래 코드를 입력하자.

 

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Flask</title>
  </head>
  <body>
    <h1>Hello World</h1>
    <p>Hello Flask</p>
  </body>
</html>

 

이제 화면에 생성한 HTML 파일을 출력하기 위해 app.py를 수정하자.

 

from flask import Flask
from flask import render_template

app = Flask(__name__)


@app.route('/')
def home():
    return render_template('index.html')


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

 

그리고 다시 python app.py 명령어를 통해 서버를 구동 한 후 http://localhost:5000 주소로 다시 접속하면 방금 작성한 HTML 파일의 내용이 나타나는 것을 확인할 수 있다.