본문 바로가기

프로그래밍 언어/파이썬

파이썬 Flask 튜토리얼, 웹 개발 가이드

파이썬 Flask 튜토리얼, 웹 개발 가이드

Flask는 파이썬으로 웹 애플리케이션을 개발하는 데 사용되는 마이크로 웹 프레임워크입니다. Flask는 그 가벼움과 확장성을 통해 초보자들이 웹 개발을 쉽게 시작할 수 있게 해줍니다. 이 튜토리얼에서는 Flask를 사용해 간단한 웹 애플리케이션을 만들어보며, Flask의 핵심 개념과 기능을 단계별로 알아보겠습니다.

 

 

  1. Flask란 무엇인가?
  2. 개발 환경 설정하기
  3. 기본 Flask 애플리케이션 작성
  4. 라우팅과 URL 설정
  5. 템플릿 엔진 사용하기
  6. 데이터베이스 연동
  7. 애플리케이션 배포하기
  8. 결론 및 다음 단계

 

1. Flask란 무엇인가?

Flask는 파이썬으로 작성된 웹 프레임워크로, 그 가벼운 구조와 유연성 덕분에 초보자와 전문가 모두에게 사랑받고 있습니다. Flask는 최소한의 코드를 작성하면서도 필요한 기능을 추가로 구현할 수 있는 마이크로 프레임워크로, Django와 같은 대형 프레임워크와 달리, 프로젝트의 요구 사항에 맞게 쉽게 확장할 수 있습니다.

 

 

2. 개발 환경 설정하기

Flask를 사용하기 위해서는 파이썬과 pip이 설치되어 있어야 합니다. 아래는 Flask 개발 환경을 설정하는 단계입니다:

  • 파이썬 설치: 파이썬 공식 웹사이트에서 파이썬을 다운로드하여 설치합니다.
  • 가상 환경 생성: 프로젝트마다 독립적인 가상 환경을 설정하여 패키지 간의 충돌을 방지합니다.
    python -m venv venv
  • Flask 설치: 가상 환경을 활성화한 후, Flask를 설치합니다.
    pip install Flask

 

 

3. 기본 Flask 애플리케이션 작성

이제 Flask 애플리케이션을 작성해 보겠습니다. 가장 기본적인 Flask 애플리케이션은 다음과 같이 구성됩니다:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def home():
    return "Hello, Flask!"

if __name__ == '__main__':
    app.run(debug=True)

이 코드를 실행하면 기본적인 웹 서버가 실행되고, http://localhost:5000에서 "Hello, Flask!" 메시지를 확인할 수 있습니다.

 

 

4. 라우팅과 URL 설정

Flask의 핵심 기능 중 하나는 라우팅입니다. 라우팅을 통해 특정 URL에 대해 어떤 함수를 실행할지 정의할 수 있습니다. 다음은 다양한 라우팅 예제입니다:

@app.route('/about')
def about():
    return "This is the About page."

@app.route('/user/')
def show_user_profile(username):
    return f"User {username}"

여기서 <username>은 URL에서 변수로 사용되며, 사용자가 입력한 값을 받아 사용할 수 있습니다.

 

 

5. 템플릿 엔진 사용하기

Flask는 HTML 템플릿을 생성하기 위해 Jinja2 템플릿 엔진을 사용합니다. 이를 통해 코드와 마크업을 분리하여 유지보수성을 높일 수 있습니다. 예를 들어, 다음과 같이 HTML 파일을 템플릿으로 사용할 수 있습니다:

from flask import render_template

@app.route('/hello/<name>')
def hello(name):
    return render_template('hello.html', name=name)

그리고 templates/hello.html 파일은 다음과 같이 작성할 수 있습니다:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Hello</title>
</head>
<body>
    <h1>Hello, {{ name }}!</h1>
</body>
</html>

 

 

 

 

6. 데이터베이스 연동

Flask는 데이터베이스와 쉽게 연동할 수 있습니다. SQLite와 SQLAlchemy를 사용하여 간단한 데이터베이스 연동을 살펴보겠습니다. 먼저, SQLAlchemy를 설치합니다:

pip install Flask-SQLAlchemy

그 후, Flask 애플리케이션에 데이터베이스 설정을 추가합니다:

from flask_sqlalchemy import SQLAlchemy

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

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

이렇게 하면 site.db라는 SQLite 데이터베이스 파일이 생성되고, User 테이블이 생성됩니다. 이처럼 Flask는 데이터베이스와의 통합이 매우 간단하며, 다양한 ORM 라이브러리를 통해 더욱 강력한 기능을 제공합니다.

 

 

7. 애플리케이션 배포하기

Flask 애플리케이션을 로컬에서 개발한 후, 실제 서버에 배포하는 과정도 매우 중요합니다. 일반적으로 WSGI 서버인 Gunicorn과 Nginx를 사용하여 배포합니다:

pip install gunicorn
gunicorn -w 4 -b 0.0.0.0:8000 wsgi:app

여기서 wsgi:app은 WSGI 서버에서 Flask 애플리케이션을 실행하기 위한 엔트리 포인트를 지정합니다. Nginx는 역방향 프록시로 사용되어 애플리케이션에 요청을 라우팅하고, 정적 파일을 제공합니다.

 

 

8. 결론 및 다음 단계

이 튜토리얼을 통해 Flask의 기본 개념과 웹 애플리케이션을 구축하는 방법을 배웠습니다. Flask는 매우 유연하고 확장성이 높아 초보자도 쉽게 시작할 수 있으며, 점진적으로 더 복잡한 웹 애플리케이션으로 발전시킬 수 있습니다. 다음 단계로는 Flask의 다양한 확장 기능을 탐구하거나, 실제 프로젝트를 시작하여 Flask의 강력한 기능을 더욱 깊이 이해하는 것이 좋습니다.