[python] Flask와 Angular를 조합한 웹 사이트의 구조

웹 개발에서 Flask와 Angular를 조합하여 웹 사이트를 개발하는 것은 매우 흥미로운 일입니다. Flask는 파이썬 웹 프레임워크로서 백엔드 서버를 구축하고 데이터를 처리하는데 사용됩니다. 한편, Angular는 프론트엔드 프레임워크로서 사용자 인터페이스를 개발하는데 주로 사용됩니다. 이번 블로그에서는 Flask와 Angular를 조합하여 웹 사이트를 개발할 때 어떻게 구조화해야 하는지에 대해 알아보겠습니다.

1. 폴더 구조

웹 애플리케이션을 개발할 때는 백엔드 서버와 프론트엔드 애플리케이션을 구분하여 폴더를 구성하는 것이 좋습니다. 보통 다음과 같은 구조를 취합니다.

myapp/
├─ backend/
│   ├─ app.py
│   ├─ static/
│   └─ templates/
└─ frontend/
    ├─ src/
    └─ angular.json

2. 백엔드 서버

Flask 애플리케이션은 backend 폴더 안에 위치합니다. app.py 파일은 Flask 앱의 진입점이며, static 폴더에는 정적 파일(이미지, 스타일 시트 등)이 위치합니다. 또한, templates 폴더에는 HTML 템플릿 파일이 위치합니다.

# backend/app.py

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

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

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

3. 프론트엔드 애플리케이션

프론트엔드 애플리케이션은 frontend 폴더 안에 위치하며, Angular CLI를 사용하여 생성할 수 있습니다. 컴포넌트, 서비스 및 모듈과 같은 Angular 파일들은 src 폴더에 위치하며, 구성과 빌드 설정은 angular.json 파일에서 관리됩니다.

// frontend/angular.json

{
  "projects": {
    "myapp": {
      "architect": {
        "build": {
          "options": {
            "outputPath": "../backend/static"
          }
        }
      }
    }
  }
}

4. 백엔드와 프론트엔드 통합

백엔드와 프론트엔드 애플리케이션을 통합하기 위해서는 Flask 서버에서 Angular 애플리케이션을 제공해야 합니다. 이를 위해 백엔드 서버에서 정적 파일과 Angular 빌드 파일을 호스팅할 수 있도록 설정해야 합니다.

# backend/app.py

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

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

@app.route('/<path:filename>')
def static_files(filename):
    return send_from_directory('../frontend/src', filename)

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

이와 같이 Flask와 Angular를 조합하여 웹 애플리케이션을 구축할 수 있습니다. 이러한 구조를 통해 백엔드 서버와 프론트엔드 애플리케이션을 분리하여 개발하고, 필요에 따라 통합할 수 있습니다.

이상으로 Flask와 Angular를 조합한 웹 사이트의 구조에 대해 알아보았습니다. 감사합니다.

참고 문헌: