이전에도 Flask를 사용해본 적이 있지만 전체적인 기능을 구현하기 바빠 코드 하나하나가 어떤 의미를 가지고 있는지 몰랐다.
마침 항해99 0주차 및 Pre-onboarding 기간 동안 Python의 Flask를 사용하고 있다.
이번 기회에 Flask가 무엇이며, 어떤 식으로 동작되고 동작에 필요한 요소들은 어떤 것들이 있는지 알아보고자 한다.
플라스크(Flask)는 파이썬으로 작성된 마이크로 웹 프레임워크의 하나로, Werkzeug 툴킷과 Jinja2 템플릿 엔진에 기반을 둔다. 플라스크는 특별한 도구나 라이브러리가 필요 없기 때문에 마이크로 프레임워크라 부른다. 데이터베이스 추상화 계층, 양식 유효성 확인, 기타 기존의 서드파티 라이브러리가 공통 기능을 제공하는 구성 요소가 없다. - Wikipedia Flask Web Framework
위키백과에 명시된 내용만 읽어보았을 땐, 크게 와닿지가 않는다. 마이크로 웹 프레임워크는 무엇이며, 뒤에 서술된 용어들조차 잘 들어오지 않아 인용문을 분해해 찾아보았다.
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run()
위 코드를 보면 Flask 라이브러리를 import한 후, 6줄의 코드로 서버를 기동할 수 있다.
간단하게 서버를 만들 수 있지만, 플라스크에는 폼(form)이나 데이터베이스(database)를 처리하는 기능이 없다.
그러나 3줄의 코드를 추가하면 폼과 데이터베이스를 처리할 수 있다.
from flask import render_template, request
from pymongo import MongoClient
import certifi
각각의 라이브러리는 어떤 역할을 할까?
render_template
: Flask에서 제공하는 함수로 templates에 저장된 html을 불러올 때 사용하는 함수
request
: 유입 요청 데이터에 접근하기 위해서 사용되는 전역 객체
pymongo
: mongodb를 사용하기 위한 라이브러리
certifi
: Mozilla가 신중하게 선별한 루트 인증서 모음을 제공함.
즉, 공용 수준의 인증서들을 사용할 수 있도록 함
Flask는 가벼운 프레임워크지만 사용자의 필요에 따라 기능들을 확장해 나갈 수 있다.
그래서 마이크로 웹 프레임워크(Micro Web Framework)라고 지칭한다.