1. 라이브러리와 프레임워크의 차이
    1. 라이브러리는 레고 블록, 프레임워크는 퍼즐 조각에 비교된다.
      1. 라이브러리는 내가 원하는대로 쌓아 올릴 수 있지만, 프레임워크는 정해진 틀에 내 코드를 짜맞추어야 하기 때문
    2. 일반적으로 라이브러리는 내 코드가 라이브러리를 호출하고, 프레임워크는 프레임워크가 내 코드를 호출한다는 식으로 설명된다.
  2. 프레임워크란?
    1. 프레임워크는 위에서 말했듯 내 코드를 호출하는 어떤 틀을 의미한다.
    2. 우리가 사용할 Flask라는 놈은 파이썬 프레임워크로, 내가 어떤 파이썬 코드를 작성하면, 그 코드를 가져다 쓰는 틀이라 생각하면 편하다.
  3. Flask란?
    1. Flask는 파이썬 웹 프레임워크로 간단하게 웹 애플리케이션을 구축하기위해 자주 사용되는 프레임워크
    2. 기본적인 라우팅, 세션 관리, 템플릿 엔진, 폼 처리 등의 기능을 내장
    3. 다양한 확장 기능을 사용하여 데이터베이스 연동, 인증 및 인가, 테스팅, RESTful API 구축 등 다양한 작업을 수행할 수 있음
    4. QLAlchemy와 함께 사용하면 데이터베이스 작업을 수행할 수 있고, Jinja2와 함께 사용하면 템플릿을 효율적으로 관리할 수 있음

간단한 Flask 애플리케이션

from flask import Flask

app = Flask(__name__)  # Flask 애플리케이션 객체 생성

@app.route('/')  # 루트 URL에 대한 요청을 처리하는 함수 등록
def hello():
    return "Hello, World!"  # "Hello, World!" 문자열 반환

if __name__ == "__main__":
    app.run()  # 개발 서버 실행

주로 사용되는 Flask 문법

  1. 모듈 임포트

    1. Flask의 장점은 Flask 자체는 매우 가볍지만
    2. from flask import Flask, render_template, request
  2. 라우팅

    1. 라우팅은 URL과 특정 함수를 매핑하는 작업을 의미한다. Flask에서는 @app.route 데코레이터를 사용하여 URL 경로를 정의하고, 해당 경로에 접근했을 때 실행 될 함수를 지정한다. 이 때, 매핑되는 함수를 뷰 함수라고 한다

      @app.route("/hello") # <- 이 부분이 라우팅을 위한 데코레이터
      def index(): # /hello 라는 url에 접근했을 때, index라는 함수를 실행시킨다.
          return "Hello, Flask!"
      
  3. 템플릿

    1. Flask는 템플릿 엔진을 내장하고 있어, 동적으로 웹 페이지를 생성할 수 있다. 템플릿은 HTML 파일 내에 특별한 문법을 사용하여 작성되는데, Flask는 render_template 함수를 제공하여 템플릿 파일을 렌더링하고, 데이터를 전달할 수 있다.

      @app.route('/')
      def index():
          name = "연한"
          return render_template("index.html", name=name)
      
  4. 요청 데이터 처리

    1. Flask는 클라이언트의 요청에 포함된 데이터를 처리할 수 있다. request 객체를 사용하여 요청 메서드(GET, POST 등) 및 데이터에 접근할 수 있다.

      from flask import request
      
      @app.route("/login", methods=["POST"])
      def login():
          username = request.form["username"]
          password = request.form["password"]
          # 로그인 처리 로직 작성