반응형
Python 마이크로 웹 프레임워크, Flask
Flask는 Python을 위한 마이크로 웹 프레임워크로, 가볍고 사용하기 쉬워 소규모에서 중규모 웹 애플리케이션에 적합합니다. Django와 같은 대형 프레임워크에 비해 필수적인 도구만 제공하여 필요한 구성 요소만 선택해서 사용할 수 있는 유연성을 제공합니다.
Flask의 주요 특징
- 경량 및 모듈식 설계: 간단하고 최소한의 기능을 제공하며, 필요에 따라 확장을 추가할 수 있습니다.
- 내장 개발 서버 및 디버거: 애플리케이션을 테스트하고 디버그 하는 데 유용한 기능을 제공합니다.
- RESTful 요청 디스패칭: RESTful API를 쉽게 구축할 수 있습니다.
- Jinja2 템플릿 엔진: 동적으로 HTML을 생성할 수 있는 강력한 템플릿 엔진을 지원합니다.
- 세션 관리: 보안 쿠키를 사용하여 세션을 유지할 수 있습니다.
- 단위 테스트 지원: 애플리케이션을 위한 단위 테스트 도구를 제공합니다.
- 광범위한 문서화: 문서화가 잘 되어 있으며, 활발한 커뮤니티가 있습니다.
기본 Flask 애플리케이션 예제
다음은 기본 Flask 애플리케이션을 만드는 간단한 예제입니다:
from flask import Flask, render_template, request
app = Flask(__name__)
@app.route('/')
def home():
return render_template('index.html')
@app.route('/greet', methods=['POST'])
def greet():
name = request.form.get('name')
return f'Hello, {name}!'
if __name__ == '__main__':
app.run(debug=True)
Flask 애플리케이션 설정
설치
Flask를 설치하려면 다음 명령어를 사용하세요:
pip install flask
프로젝트 구조 생성
Flask 프로젝트를 다음과 같이 구성합니다:
애플리케이션 실행
다음 명령어로 애플리케이션을 실행합니다:웹 브라우저에서 http://127.0.0.1:5000/
로 이동하여 Flask 애플리케이션을 확인할 수 있습니다.
python app.py
동적 웹 페이지 생성
Flask는 Jinja2 템플릿 엔진을 사용하여 동적 웹 페이지를 렌더링 합니다. 다음은 Jinja2 사용 예제입니다:
index.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Flask App</title>
</head>
<body>
<h1>Welcome to My Flask App!</h1>
<form action="/greet" method="post">
<label for="name">Enter your name:</label>
<input type="text" id="name" name="name" required>
<input type="submit" value="Submit">
</form>
</body>
</html>
Flask에서 폼 처리
Flask는 request
객체를 사용하여 폼 데이터를 쉽게 처리할 수 있습니다. 다음은 폼 데이터를 액세스하는 방법입니다:
@app.route('/submit', methods=['POST'])
def submit_form():
name = request.form['name']
email = request.form['email']
return f'Name: {name}, Email: {email}'
Flask 확장
Flask는 다양한 확장을 통해 추가 기능을 제공할 수 있습니다:
- Flask-SQLAlchemy: SQLAlchemy를 사용하여 ORM을 지원합니다.
- Flask-Migrate: 데이터베이스 마이그레이션을 처리합니다.
- Flask-WTF: WTForms와 통합하여 폼 처리를 제공합니다.
- Flask-Login: 사용자 세션 및 인증을 관리합니다.
- Flask-Mail: 이메일 전송 기능을 제공합니다.
RESTful API 구축
Flask를 사용하여 RESTful API를 쉽게 구축할 수 있습니다. 다음은 간단한 예제입니다:
from flask import Flask, jsonify, request
app = Flask(__name__)
@app.route('/api/data', methods=['GET'])
def get_data():
data = {'key': 'value'}
return jsonify(data)
@app.route('/api/data', methods=['POST'])
def post_data():
data = request.get_json()
return jsonify(data), 201
if __name__ == '__main__':
app.run(debug=True)
실습 과제
- To-Do List 앱 만들기:
- 할 일을 추가, 삭제 및 표시하는 라우트를 만듭니다.
- HTML 폼을 사용하여 입력을 받고, Jinja2 템플릿을 사용하여 리스트를 렌더링합니다.
- RESTful API 만들기:
- 책 목록을 관리하는 간단한 API를 개발하고, 책을 추가, 제거 및 나열하는 엔드포인트를 만듭니다.
형성 평가
Flask
프레임워크의 목적을 설명하세요.- Jinja2가 무엇이며, Flask에서 어떻게 사용되는지 설명하세요.
- Flask에서 폼 데이터를 처리하는 과정을 설명하세요.
- 일반적인 Flask 확장 기능은 무엇이며, 그 목적은 무엇입니까?
- Flask를 사용하여 간단한 RESTful API를 구현하세요.
'컴퓨터과학과' 카테고리의 다른 글
[Flask] 서버 프로그램의 동작 원리 (33) | 2024.08.15 |
---|---|
[Flask] 배치 프로그램과 서버 프로그램의 차이 (29) | 2024.08.14 |
[AI] 인공지능 시대에 늘어날 프레카리아트(Precariat) (32) | 2024.08.12 |
[AI] 파이썬 마이크로 웹 프레임워크, Flask (34) | 2024.08.11 |
[AI] Windows 11에서 환경 변수를 설정하는 방법 (36) | 2024.08.10 |
댓글