[python] Flask를 이용한 웹앱 개발

Flask는 Python으로 웹 애플리케이션을 쉽게 구축할 수 있는 경량화된 웹 프레임워크입니다. 이번 블로그에서는 Python Flask를 사용하여 간단한 웹 어플리케이션을 구축하는 방법에 대해 알아보겠습니다.

목차

  1. Flask 소개
  2. Flask 웹앱 설정
  3. 라우팅
  4. 템플릿 사용
  5. 데이터베이스 통합

Flask 소개

Flask는 Werkzeug 툴킷과 Jinja2 템플릿 엔진을 기반으로 한 마이크로 웹 프레임워크입니다. 간결하면서도 확장 가능한 구조를 가지고 있어 웹 애플리케이션을 쉽게 개발할 수 있습니다.

Flask 웹앱 설정

먼저, Flask를 설치합니다.

pip install flask

다음은 간단한 Flask 애플리케이션을 만드는 예제입니다.

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

위의 코드를 app.py 파일에 저장한 후, 터미널에서 다음과 같이 실행합니다.

export FLASK_APP=app.py
flask run

웹 브라우저에서 http://127.0.0.1:5000을 열면 “Hello, World!”가 표시됩니다.

라우팅

Flask에서는 URL 경로에 따라 특정 함수를 실행할 수 있습니다. 예를 들어, /about 경로로 요청이 오면 “About Page”를 표시하는 함수를 실행할 수 있습니다.

@app.route('/about')
def about():
    return 'About Page'

템플릿 사용

Flask는 Jinja2 템플릿 엔진을 통해 동적인 HTML 페이지를 생성할 수 있습니다. 템플릿 파일은 templates 폴더에 저장하여 사용할 수 있습니다.

예를 들어, index.html 파일에 다음과 같이 작성할 수 있습니다.


<!DOCTYPE html>
<html>
<head>
    <title>{{ title }}</title>
</head>
<body>
    <h1>{{ content }}</h1>
</body>
</html>

그리고 Flask 애플리케이션에서는 다음과 같이 템플릿을 렌더링할 수 있습니다.

from flask import render_template

@app.route('/home')
def home():
    return render_template('index.html', title='Homepage', content='Welcome to my website')

데이터베이스 통합

Flask는 다양한 데이터베이스와의 연동을 지원합니다. SQLAlchemy나 Flask-SQLAlchemy를 사용하여 데이터베이스를 쉽게 다룰 수 있습니다.

예를 들어, Flask-SQLAlchemy를 사용하여 SQLite 데이터베이스를 연동하는 방법은 다음과 같습니다.

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db'
db = SQLAlchemy(app)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)

이렇게 Flask를 사용하여 간단한 웹 어플리케이션을 구축하는 방법에 대해 간략히 살펴보았습니다.

참고 자료