Flask 사용법

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는 필요에 따라 확장성을 높일 수 있어, 소규모 프로젝트에서 대규모 프로젝트로 확장할 때도 매우 유용한 프레임워크입니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다