파이썬 Flask 설명서

Flask는 Python으로 작성된 가볍고 유연한 웹 프레임워크로, 단순한 웹 사이트에서부터 복잡한 웹 애플리케이션까지 손쉽게 구축할 수 있도록 해줍니다. Flask는 최소한의 코드로 웹 애플리케이션을 만들 수 있는 마이크로 프레임워크로, 다음과 같은 특징을 가집니다.

  • 간결성: 복잡한 설정이나 대규모 구조 없이 간단한 코드로 서버를 시작할 수 있습니다.
  • 확장성: 필요한 기능만 확장해서 사용할 수 있습니다.
  • Jinja2 템플릿 엔진: HTML 템플릿을 쉽게 관리하고 데이터와의 연동을 편리하게 해주는 템플릿 엔진을 제공합니다.

Flask 설치

Flask는 Python 패키지 관리자인 pip를 통해 설치할 수 있습니다.

bash
pip install Flask

기본 Flask 애플리케이션 작성

다음은 가장 간단한 Flask 애플리케이션 예제입니다.

from flask import Flask

app = Flask(__name__)

@app.route(“/”)
def hello():
return “Hello, World!”

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


주요 설명

  • Flask 객체 생성: app = Flask(__name__)는 Flask 애플리케이션 객체를 만듭니다.
  • 라우트 설정: @app.route("/")는 URL 경로를 지정하여 특정 경로로 들어온 요청에 대해 함수를 실행합니다.
  • 서버 실행: app.run()을 통해 Flask 서버를 실행합니다.

Flask 주요 기능

1. 라우팅

라우팅은 URL과 함수를 연결하는 것으로, 다양한 URL 경로에 따라 서로 다른 페이지나 데이터를 보여줄 수 있습니다.

@app.route(“/hello”)
def hello():
return “Hello, Flask!”

@app.route(“/user/<username>”)
def show_user_profile(username):
return f”User: {username}”

2. 템플릿 렌더링

Flask는 Jinja2 템플릿 엔진을 사용하여 HTML 템플릿에 동적으로 데이터를 전달할 수 있습니다.

템플릿 파일templates/ 폴더에 작성합니다.

  • templates/index.html 예제:
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Flask App</title>
    </head>
    <body>
    <h1>Hello, {{ name }}!</h1>
    </body>
    </html>

Flask에서 템플릿 렌더링:

from flask import render_template

@app.route(“/greet/<name>”)
def greet(name):
return render_template(“index.html”, name=name)

render_template() 함수는 templates/ 폴더 내의 index.html을 찾아 렌더링하며, name 변수를 템플릿으로 전달합니다.

3.요청 처리

Flask는 GET 및 POST 요청을 처리할 수 있습니다.

  • from flask import request

    @app.route(“/submit”, methods=[“GET”, “POST”])
    def submit():
    if request.method == “POST”:
    name = request.form[“name”] return f”Hello, {name}!”
    return ”’
    <form method=”post”>
    Name: <input type=”text” name=”name”>
    <input type=”submit” value=”Submit”>
    </form>

  • request 객체를 통해 POST 데이터에 접근할 수 있으며, 사용자가 제출한 데이터를 서버에서 처리할 수 있습니다.
    ”’

4. 리다이렉트 및 URL 생성

redirect()url_for() 함수를 사용하면 URL을 생성하고 리다이렉트할 수 있습니다.

from flask import redirect, url_for

@app.route(“/”)
def index():
return redirect(url_for(“hello”))

@app.route(“/hello”)
def hello():
return “Hello, Flask!”


  • url_for("hello")hello 함수가 매핑된 URL로 이동하게 합니다.

5. Flask와 데이터베이스 연동

Flask는 SQLAlchemy와 같은 ORM(Object Relational Mapping) 라이브러리를 지원하여 데이터베이스와 연동할 수 있습니다. 예를 들어, SQLite와 연동하는 간단한 코드 예시는 다음과 같습니다.

from flask_sqlalchemy import SQLAlchemy

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):
user = User(name=name)
db.session.add(user)
db.session.commit()
return f”Added user {name}.”


  • SQLAlchemy를 사용하면 Python 객체와 데이터베이스 테이블을 매핑하여 데이터 관리를 쉽게 할 수 있습니다.

6. Flask 실행

일반적으로 다음 명령어로 Flask 애플리케이션을 실행합니다.

bash
python app.py

또는 FLASK_APP 환경 변수를 설정하여 실행할 수도 있습니다.

bash
export FLASK_APP=app.py
flask run

이 명령어로 애플리케이션을 실행한 뒤, http://127.0.0.1:5000에서 접속하여 웹 애플리케이션을 테스트할 수 있습니다.

답글 남기기

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