본문 바로가기
BIG DATA/PYTHON

[PYTHON] Flask를 이용한 간단한 웹 애플리케이션 만들기

by 라일리T 2025. 2. 24.

Flask를 이용한 간단한 웹 애플리케이션 만들기

 

이전 글에서는 자동 이메일 발송 기능을 구현해 보았습니다.
이제 Python을 활용하여 간단한 웹 애플리케이션을 만들어 보겠습니다.

웹 애플리케이션을 만들기 위해 Python의 Flask 프레임워크를 사용합니다.
Flask는 가볍고 사용하기 쉬운 웹 프레임워크로, 웹 서비스를 빠르게 개발할 수 있습니다.


1. Flask란?

📌 Flask는 Python 기반의 웹 프레임워크로,
간단한 API부터 복잡한 웹 서비스까지 쉽게 개발할 수 있습니다.

장점

  • 가볍고 빠르다.
  • 코드가 간결하다.
  • 확장성이 뛰어나다.
  • Jinja2 템플릿 엔진을 지원하여 HTML과 쉽게 연동 가능

Flask vs Django

Flask Django

구조 가벼운 마이크로 프레임워크 올인원 프레임워크
학습 난이도 쉬움 중간~어려움
프로젝트 크기 소규모~중규모 대규모
확장성 유연한 커스텀 가능 기본 기능 제공

2. Flask 설치하기

📌 Flask는 pip을 이용해 쉽게 설치할 수 있습니다.

pip install flask

설치가 완료되었는지 확인하려면,

python -c "import flask; print(flask.__version__)"

버전이 출력되면 성공적으로 설치된 것입니다.


3. Flask로 첫 번째 웹 서버 만들기

📌 Flask로 간단한 웹 서버 실행하기

from flask import Flask

app = Flask(__name__)

@app.route("/")
def home():
    return "안녕하세요! Flask 웹 서버입니다."

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

📌 실행 방법

터미널에서 아래 명령어를 입력하세요.

python app.py

브라우저에서 http://127.0.0.1:5000/ 로 접속하면
웹 페이지에 "안녕하세요! Flask 웹 서버입니다."가 표시됩니다.

✅ Flask(__name__) → Flask 애플리케이션 생성
✅ @app.route("/") → 기본 URL("/")을 정의
✅ app.run(debug=True) → 디버그 모드 실행


4. HTML을 활용한 웹 페이지 만들기

4.1 HTML 파일 추가하기

Flask는 기본적으로 templates 폴더 안의 HTML 파일을 불러옵니다.
먼저, templates/index.html 파일을 만들고 다음과 같이 작성합니다.

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <title>Flask 웹사이트</title>
</head>
<body>
    <h1>안녕하세요! Flask 웹사이트입니다.</h1>
    <p>이 페이지는 Python Flask로 만들어졌습니다.</p>
</body>
</html>

4.2 Flask에서 HTML 파일 불러오기

이제 Flask 코드에서 index.html을 불러오도록 수정합니다.

from flask import Flask, render_template

app = Flask(__name__)

@app.route("/")
def home():
    return render_template("index.html")  # index.html 파일을 불러옴

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

✅ render_template("index.html") → HTML 파일 렌더링
✅ templates/ 폴더 안에 HTML 파일 저장


5. 폼(Form) 데이터 입력받기

웹사이트에서 사용자로부터 입력을 받는 기능을 추가해 보겠습니다.
예를 들어, 사용자가 이름을 입력하면 환영 메시지를 보여주는 웹 페이지를 만들어 보겠습니다.

5.1 HTML 폼 생성 (templates/form.html)

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <title>Flask 폼 예제</title>
</head>
<body>
    <h1>이름을 입력하세요</h1>
    <form action="/result" method="post">
        <input type="text" name="username">
        <input type="submit" value="제출">
    </form>
</body>
</html>

5.2 Flask에서 입력 처리 (app.py)

from flask import Flask, render_template, request

app = Flask(__name__)

@app.route("/")
def home():
    return render_template("form.html")

@app.route("/result", methods=["POST"])
def result():
    username = request.form["username"]
    return f"안녕하세요, {username}님! 반갑습니다."

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

✅ request.form["username"] → 사용자가 입력한 값 가져오기
✅ methods=["POST"] → 데이터를 POST 방식으로 전송


6. Flask에서 데이터베이스 연동하기 (SQLite)

Flask는 SQLite와 같은 가벼운 데이터베이스를 쉽게 사용할 수 있습니다.
예제: 사용자가 입력한 이름을 DB에 저장하고, 저장된 데이터를 조회하는 기능을 만들어보겠습니다.

6.1 SQLite 데이터베이스 설정

📌 Flask에서 SQLite 데이터베이스 생성

import sqlite3

# 데이터베이스 연결 (파일이 없으면 자동 생성)
conn = sqlite3.connect("users.db")
cursor = conn.cursor()

# 테이블 생성
cursor.execute("""
    CREATE TABLE IF NOT EXISTS users (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        name TEXT NOT NULL
    )
""")

conn.commit()
conn.close()

✅ sqlite3.connect("users.db") → SQLite 데이터베이스 연결
✅ CREATE TABLE IF NOT EXISTS users → 테이블 생성


6.2 사용자가 입력한 데이터 저장

📌 Flask 코드 (app.py) 수정

import sqlite3
from flask import Flask, render_template, request

app = Flask(__name__)

# 홈 페이지
@app.route("/")
def home():
    return render_template("form.html")

# 데이터 저장
@app.route("/result", methods=["POST"])
def result():
    username = request.form["username"]

    # DB 저장
    conn = sqlite3.connect("users.db")
    cursor = conn.cursor()
    cursor.execute("INSERT INTO users (name) VALUES (?)", (username,))
    conn.commit()
    conn.close()

    return f"✅ {username}님이 DB에 저장되었습니다."

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

✅ INSERT INTO users (name) VALUES (?) → 사용자 입력값 DB 저장


7. 결론

이번 글에서는 Flask를 활용한 웹 애플리케이션 개발을 배웠습니다.

  • Flask 기본 개념 및 설치
  • 간단한 웹 서버 실행
  • HTML을 활용한 웹 페이지 구성
  • 사용자 입력 폼(Form) 만들기
  • SQLite 데이터베이스 연동

다음 글에서는 Flask로 로그인 기능을 구현하는 방법을 배워보겠습니다! 🚀

 

2025.02.23 - [BIG DATA/PYTHON] - [PYTHON] Python으로 자동 이메일 발송하기 (SMTP 활용)

2025.02.23 - [BIG DATA/PYTHON] - [PYTHON] 파이썬 Selenium을 활용한 자동 웹 크롤링

2025.02.21 - [BIG DATA/PYTHON] - [PYTHON] 파이썬을 활용한 웹 크롤링(Web Crawling) 기초

 

[PYTHON] 파이썬을 활용한 웹 크롤링(Web Crawling) 기초

파이썬을 활용한 웹 크롤링(Web Scraping) 기초인터넷에는 다양한 데이터가 존재합니다.하지만 모든 데이터를 직접 다운로드할 수 있는 것은 아니므로, **웹 크롤링(Web Scraping)**을 사용하여 원하는

englishforkid.tistory.com