← 전체 목록
파이썬

Flask 사용법

작성일: 2024-12-04 · 원본 자료

Flask는 Python으로 간단하고 빠르게 웹 애플리케이션을 만들 수 있는 마이크로 웹 프레임워크입니다. Flask의 기본적인 사용법을 단계별로 설명드리겠습니다.

1. Flask 기본 설정

Flask 애플리케이션을 생성하려면 먼저 Flask 라이브러리를 설치해야 합니다. 설치가 끝나면 다음과 같이 간단한 웹 서버를 구성할 수 있습니다.
# app.py from flask import Flask app = Flask(__name__) @app.route("/") def home(): return "Hello, Flask!" if __name__ == "__main__": app.run(debug=True)
  • app = Flask(__name__): Flask 애플리케이션 객체를 만듭니다.
  • @app.route("/"): 경로 설정으로, "/" URL로 접속 시 home() 함수가 실행됩니다.
  • app.run(debug=True): Flask 서버를 시작합니다.

2. 라우팅

Flask에서 URL을 관리하려면 라우팅을 설정합니다. 다양한 경로를 @app.route() 데코레이터로 설정할 수 있으며, 동적 URL도 설정할 수 있습니다.
@app.route("/hello") def hello(): return "Hello, World!" @app.route("/user/<username>") def user_profile(username): return f"User: {username}"
  • /hello 경로에 접속 시 "Hello, World!"를 반환합니다.
  • /user/<username> 경로는 username을 매개변수로 받아 동적으로 사용자 페이지를 표시합니다.

3. 템플릿 사용

HTML을 직접 반환하는 대신 Jinja2 템플릿을 사용하여 HTML 파일을 렌더링할 수 있습니다. 템플릿 파일은 프로젝트의 templates 폴더에 위치시킵니다. 프로젝트 구조
my_flask_app/ ├── app.py └── templates/ └── index.html
템플릿 파일 (templates/index.html)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Flask App</title> </head> <body> <h1>Welcome, {{ name }}!</h1> </body> </html>
Flask에서 템플릿 렌더링
from flask import render_template @app.route("/welcome/<name>") def welcome(name): return render_template("index.html", name=name)
  • render_template() 함수는 templates/ 폴더에서 지정한 템플릿 파일을 렌더링합니다.
  • 템플릿 파일에서 {{ name }}을 사용해 Python 데이터를 HTML로 전달할 수 있습니다.

4. HTTP 메서드 처리

Flask에서는 GET, POST와 같은 HTTP 메서드에 따라 다른 처리를 할 수 있습니다. POST 메서드를 사용하여 데이터를 제출하거나 요청을 처리하는 기능을 만들어보겠습니다.
from flask import request @app.route("/submit", methods=["GET", "POST"]) def submit(): if request.method == "POST": username = request.form["username"] return f"Hello, {username}!" return ''' <form method="post"> Username: <input type="text" name="username"> <input type="submit" value="Submit"> </form> '''
  • request 객체를 사용하여 GET 또는 POST 요청에서 데이터를 가져옵니다.
  • request.form은 HTML 폼 데이터에 접근합니다.

5. 리다이렉트와 URL 생성

사용자를 다른 페이지로 리다이렉트하거나, URL을 생성할 때 redirect()와 url_for() 함수를 사용할 수 있습니다.
from flask import redirect, url_for @app.route("/") def index(): return redirect(url_for("hello")) @app.route("/hello") def hello(): return "Hello, redirected!"
  • url_for("함수명")을 사용하여 해당 함수로 연결된 URL을 생성하고 redirect()로 해당 경로로 리다이렉트할 수 있습니다.

6. 플라스크에서 데이터베이스 연동

Flask는 데이터베이스 연동 시 Flask-SQLAlchemy를 주로 사용합니다. SQLAlchemy는 Python의 ORM 라이브러리로, 데이터베이스와 쉽게 연동할 수 있습니다.
bash
코드 복사
pip install Flask-SQLAlchemy
app.py
from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///test.db" # 데이터베이스 경로 설정 db = SQLAlchemy(app) # 데이터베이스 모델 정의 class User(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(80), nullable=False) @app.route("/add_user/<name>") def add_user(name): new_user = User(name=name) db.session.add(new_user) db.session.commit() return f"User {name} added." if __name__ == "__main__": db.create_all() # 테이블 생성 app.run(debug=True)
  • db.create_all()을 통해 모델에 기반한 데이터베이스 테이블을 생성합니다.
  • SQLAlchemy를 사용하여 데이터를 삽입, 조회, 업데이트, 삭제할 수 있습니다.

7. Flask 실행

Flask 애플리케이션을 실행하려면 다음과 같이 실행할 수 있습니다.
bash
export FLASK_APP=app.py flask run
또는 Python으로 직접 실행할 수도 있습니다.
python app.py

요약

Flask를 사용하여 기본적인 웹 애플리케이션을 구축할 수 있습니다. 핵심 개념으로는 라우팅, 템플릿 렌더링, HTTP 요청 처리, 리다이렉트와 URL 생성 등이 있으며, SQLAlchemy와 같은 ORM을 활용하여 데이터베이스 연동도 할 수 있습니다. Flask는 필요에 따라 확장성을 높일 수 있어, 소규모 프로젝트에서 대규모 프로젝트로 확장할 때도 매우 유용한 프레임워크입니다.