Flask (플라스크)

2021. 12. 23. 14:04Cloud Native/Flask, Django

    목차
반응형

About Flask

  플라스크는 Python으로 작성된 micro web framework 중 하나 입니다. Werkzeug toolkit과 jinja2 template engine을 기반으로 개발 되었습니다. 2004년 오스트리아 개발자인 Armin Ronacher가 개발 한 web framework 입니다. 

 

  Flask는 form, database 등 다른 framework(e.g., Java Spring) 등에서 제공하는 많은 기능들을 포함하고 있지 않습니다. 즉, 핵심적인 web framework으로서의 기능만을 제공하고 있으며, 이는 장점이자 단점이 될 수 있습니다. 개발자에게 있어서 많은 자유도, 예를 들면 어떤 UI framework을 사용할지 등을 부여하기 때문에 다양한 customizing이 가능하며, 이는 입맛에 맞는 개발을 한다는 점에서는 장점이 될 수 있으나, 쉽게 개발 진입이 가능하지 않다는 단점으로 생각 될 수 있는 부분입니다. 

 

 

플라스크 설치

Python이 설치가 되어 있다면 간단하게 pip installation을 통해서 Flask의 설치가 가능합니다. 

pip install Flask, flask_wtf, flask_sqlalchemy, mysql

cf. Python 설치: https://autumnrain.tistory.com/entry/Python-%EC%84%A4%EC%B9%98

 

hello 플라스크!

Flask의 설치가 완료 되었다면, 매우 간단하게 web server를 개발해 볼 수 있습니다. 

아래와 같이 매우 간단하게 sample web server code를 작성해 봅니다.

 

project folder를 원하시는 이름으로 생성 한 후, (e.g., hello)

해당 folder 내에 __init__.py를 생성합니다. 이후 아래와 같이 코드를 작성합니다.  

from flask import Flask

app = Flask(__name__)

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

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

위 코드를 실행하려면, hello folder로 진입 후, 다음과 같이 환경 변수를 설정합니다. 

set FLASK_APP=hello
set FLASK_ENV=development
flask run

위와 같이 입력하면 flask가 hello web server를 수행합니다. 

 

web browser 상에서 "localhost:5000" 주소를 입력하여 web server에 접속 할 수 있습니다. 

 

만약 다른 주소 및 port를 통해 접속 하고자 한다면, 예를 들어 다른 PC 상에서 해당 server에 접속 하게 하고자 한다면 다음과 같이 Flask를 실행 합니다. 

flask run --host=0.0.0.0 --port=5000

 

위의 typing을 쉽게 수행하기 위해서 batch command file을 (bat file) 생성하여 이를 실행하는 방법도 있습니다. 

@echo off
cd c:/projects/hello
set FLASK_APP=hello
set FLASK_ENV=development
c:/venvs/hello/scripts/activate

 

간단한 web server는 model, form, view, static, template 등을 포함하며 다음과 같은 구조를 지니게 됩니다. 

    ├── pybo/
    │      ├─ __init__.py
    │      ├─ models.py         <- DB 처리 file (using ex. SQLAlchemy) 모델 기반 data 처리
    │      ├─ forms.py          <- 서버 전송 폼 처리 (ex. WTForms lib 사용)
    │      ├─ views/            <- 화면구성
    │      │   └─ main_views.py
    │      ├─ static/           <- CSS, JavaScript, image file들
    │      │   └─ style.css
    │      └─ templates/        <- HTML file
    │            └─ index.html
    └── config.py               <- 환경변수, DB 등의 설정

 

 

반응형

'Cloud Native > Flask, Django' 카테고리의 다른 글

FastAPI  (0) 2022.04.22