본문 바로가기
컴퓨터과학과

[Flask] Python 마이크로 웹 프레임워크, Flask

by 공부하는노년 2024. 8. 13.
반응형

Python 마이크로 웹 프레임워크, Flask

Flask는 Python을 위한 마이크로 웹 프레임워크로, 가볍고 사용하기 쉬워 소규모에서 중규모 웹 애플리케이션에 적합합니다. Django와 같은 대형 프레임워크에 비해 필수적인 도구만 제공하여 필요한 구성 요소만 선택해서 사용할 수 있는 유연성을 제공합니다.

Flask의 주요 특징

  1. 경량 및 모듈식 설계: 간단하고 최소한의 기능을 제공하며, 필요에 따라 확장을 추가할 수 있습니다.
  2. 내장 개발 서버 및 디버거: 애플리케이션을 테스트하고 디버그 하는 데 유용한 기능을 제공합니다.
  3. RESTful 요청 디스패칭: RESTful API를 쉽게 구축할 수 있습니다.
  4. Jinja2 템플릿 엔진: 동적으로 HTML을 생성할 수 있는 강력한 템플릿 엔진을 지원합니다.
  5. 세션 관리: 보안 쿠키를 사용하여 세션을 유지할 수 있습니다.
  6. 단위 테스트 지원: 애플리케이션을 위한 단위 테스트 도구를 제공합니다.
  7. 광범위한 문서화: 문서화가 잘 되어 있으며, 활발한 커뮤니티가 있습니다.

기본 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)

실습 과제

  1. To-Do List 앱 만들기:
    • 할 일을 추가, 삭제 및 표시하는 라우트를 만듭니다.
    • HTML 폼을 사용하여 입력을 받고, Jinja2 템플릿을 사용하여 리스트를 렌더링합니다.
  2. RESTful API 만들기:
    • 책 목록을 관리하는 간단한 API를 개발하고, 책을 추가, 제거 및 나열하는 엔드포인트를 만듭니다.

형성 평가

  1. Flask 프레임워크의 목적을 설명하세요.
  2. Jinja2가 무엇이며, Flask에서 어떻게 사용되는지 설명하세요.
  3. Flask에서 폼 데이터를 처리하는 과정을 설명하세요.
  4. 일반적인 Flask 확장 기능은 무엇이며, 그 목적은 무엇입니까?
  5. Flask를 사용하여 간단한 RESTful API를 구현하세요.

댓글