파이썬 Flask 기본 구조와 라우팅, 템플릿 활용하기
파이썬 Flask는 웹 애플리케이션을 개발하기 위한 경량 프레임워크로, Python의 강력한 데이터 처리 기능과 풍부한 웹 UI를 결합하여 개발자가 효율적으로 웹 애플리케이션을 구축할 수 있도록 설계되었습니다. 이 문서에서는 파이썬 Flask의 기본 구조, 라우팅, 템플릿 활용 방법에 대해 자세히 설명합니다.
1. 파이썬 Flask 기본 구조
Flask 애플리케이션의 기본 구조는 다음과 같습니다:
- static: 웹 UI를 지원하는 모든 정적 파일(예: JavaScript, CSS, 이미지)을 포함합니다.
- templates: 애플리케이션의 HTML 페이지를 모두 포함합니다.
- userData: 업로드된 사용자 데이터를 저장합니다.
- application.py: Flask 애플리케이션 파일입니다.
- comprehend_helper.py: Amazon Comprehend에 API 호출을 수행하는 함수입니다.
- config.py: 애플리케이션 구성 파일입니다.
- requirements.txt: 애플리케이션에 필요한 Python 종속성을 지정합니다.
2. 라우팅
라우팅은 Flask 애플리케이션에서 URL을 처리하는 방법입니다. Flask는 URL을 처리하는 데 사용되는 경로를 정의하는 데 사용됩니다. 예를 들어, /
경로는 애플리케이션의 루트이며, /saveFile
경로는 사용자가 파일을 업로드한 후 호출되는 경로입니다.
from flask import Flask, request, redirect, url_for
app = Flask(__name__)
@app.route('/')
def index():
return 'Welcome to the Flask App'
@app.route('/saveFile', methods=['POST'])
def save_file():
file = request.files['file']
file.save(os.path.join(app.config['UPLOAD_FOLDER'], file.filename))
return redirect(url_for('dashboard'))
@app.route('/dashboard')
def dashboard():
return 'Dashboard Page'
3. 템플릿
템플릿은 HTML 페이지를 포함하는 디렉토리입니다. Flask는 Jinja2 템플릿 엔진을 사용하여 HTML 페이지를 렌더링합니다. 예를 들어, upload.html
페이지는 사용자가 파일을 업로드하는 HTML 양식을 포함합니다.
<!-- templates/upload.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>File Upload</title>
</head>
<body>
<form action="/saveFile" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="Upload">
</form>
</body>
</html>
4. 라우팅과 템플릿의 통합
라우팅과 템플릿을 통합하여 사용자가 파일을 업로드하고 결과를 시각화하는 웹 애플리케이션을 구축하는 방법을 보여드리겠습니다.
- templates 디렉토리에
upload.html
파일을 생성합니다. - application.py 파일에서
/
경로를 정의하여upload.html
페이지로 리다이렉션합니다. /saveFile
경로를 정의하여 사용자가 업로드한 파일을 저장하고dashboard
페이지로 리다이렉션합니다.- dashboard.html 파일을 생성하여 데이터를 읽고 시각화를 빌드합니다.
from flask import Flask, request, redirect, url_for, render_template
from flask_cors import CORS
app = Flask(__name__)
CORS(app)
app.config['UPLOAD_FOLDER'] = 'userData'
@app.route('/')
def index():
return render_template('upload.html')
@app.route('/saveFile', methods=['POST'])
def save_file():
file = request.files['file']
file.save(os.path.join(app.config['UPLOAD_FOLDER'], file.filename))
return redirect(url_for('dashboard'))
@app.route('/dashboard')
def dashboard():
data = get_data_from_file() # 데이터를 읽는 함수를 호출합니다.
return render_template('dashboard.html', data=data)
def get_data_from_file():
# 데이터를 읽는 로직을 구현합니다.
pass
5. 데이터 시각화
데이터를 시각화하는 방법은 여러 가지가 있습니다. 예를 들어, Flask와 JavaScript를 사용하여 시각화를 빌드할 수 있습니다. static/js/core.js
파일에서 JavaScript 코드를 실행하여 데이터를 시각화합니다.
// static/js/core.js
// 데이터를 읽은 후 시각화를 빌드합니다.
const data = {{ data | tojson }};
const chart = new Chart(document.getElementById('chart'), {
type: 'bar',
data: {
labels: data.labels,
datasets: [{
label: '데이터',
data: data.data,
backgroundColor: 'rgba(255, 99, 132, 0.2)',
borderColor: 'rgba(255, 99, 132, 1)',
borderWidth: 1
}]
},
options: {
scales: {
y: {
beginAtZero: true
}
}
}
});
6. 구성 처리
Flask 서버는 일련의 구성 변수를 사용하여 서버 실행 방법을 제어합니다. 이러한 변수에는 디버그 출력, 세션 토큰 또는 기타 애플리케이션 설정이 포함될 수 있습니다. config.py
파일에서 구성 변수를 정의하고 application.py
내에서 상속합니다.
# config.py
DEBUG = True
UPLOAD_FOLDER = 'userData'
# application.py
from flask import Flask
from flask_cors import CORS
app = Flask(__name__)
CORS(app)
app.config.from_pyfile('config.py')
if __name__ == '__main__':
app.run(debug=app.config['DEBUG'])
결론
파이썬 Flask는 웹 애플리케이션을 개발하기 위한 경량 프레임워크로, 라우팅과 템플릿을 통해 효율적으로 웹 애플리케이션을 구축할 수 있습니다. 이 문서에서는 Flask의 기본 구조, 라우팅, 템플릿 활용 방법을 자세히 설명하였습니다. 이를 통해 개발자가 Flask를 사용하여 다양한 웹 애플리케이션을 구축할 수 있도록 도와줍니다.
'[개발] 파이썬' 카테고리의 다른 글
8.2.2. Django 모델과 데이터베이스 (0) | 2024.12.30 |
---|---|
8.2.1. Django 기본 설정 (0) | 2024.12.30 |
7.3. Matplotlib (2) | 2024.12.30 |
7.2. Pandas (0) | 2024.12.30 |
7.1. NumPy (0) | 2024.12.30 |