프로그래밍을 전공하지 않은 사람들도 웹 개발을 배우고 싶다면 Python 기반의 Flask 프레임워크가 좋은 선택이 될 수 있습니다. Flask는 간결하고 직관적인 문법을 제공하여 초보자도 쉽게 웹 애플리케이션을 만들 수 있습니다. 이 글에서는 비전공자를 위한 Flask 웹 개발의 기초부터 실전 프로젝트까지 쉽게 따라 할 수 있도록 단계별로 설명합니다.
1. Flask란 무엇인가?
Flask는 Python으로 개발된 마이크로 웹 프레임워크로, 웹 애플리케이션을 빠르고 간편하게 만들 수 있습니다. Django와 같은 풀스택 프레임워크보다 가볍고 자유도가 높아, 필요한 기능만 추가하여 사용할 수 있습니다.
✔ Flask의 주요 특징
- 간결한 코드: 짧고 직관적인 코드로 웹 서비스를 개발할 수 있습니다.
- 유연성: 필요한 라이브러리만 선택하여 사용할 수 있어, 자유롭게 확장할 수 있습니다.
- 빠른 학습: 문법이 쉬워 비전공자도 빠르게 배울 수 있습니다.
- REST API 개발 용이: 데이터를 주고받는 API 서버 구축이 간단합니다.
2. Flask 설치 및 기본 프로젝트 시작
✔ Flask 설치하기
Python이 설치되어 있다면 아래 명령어를 입력하여 Flask를 설치할 수 있습니다.
pip install 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 웹 서버입니다." 라는 문구가 출력됩니다.
3. Flask 웹 페이지 만들기 (HTML & 템플릿 엔진)
Flask는 Jinja2 템플릿 엔진을 사용하여 HTML 페이지를 동적으로 생성할 수 있습니다.
✔ Flask에서 HTML 파일 사용하기
먼저, 프로젝트 폴더 안에 templates
폴더를 만들고, index.html
파일을 생성합니다.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>Flask 웹 페이지</title>
</head>
<body>
<h1>안녕하세요! Flask로 만든 웹 페이지입니다.</h1>
</body>
</html>
✔ Flask에서 HTML 페이지 표시
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def home():
return render_template('index.html')
if __name__ == '__main__':
app.run(debug=True)
이제 브라우저에서 http://127.0.0.1:5000
에 접속하면 HTML 페이지가 출력됩니다.
4. 사용자 입력 받기 (Flask에서 폼 처리)
Flask는 사용자의 입력을 받아 처리하는 기능도 제공합니다. 간단한 로그인 폼을 만들어 보겠습니다.
✔ HTML 폼 만들기
<form method="POST">
<label>사용자 이름:</label>
<input type="text" name="username">
<button type="submit">로그인</button>
</form>
✔ Flask에서 입력값 처리
from flask import Flask, render_template, request
app = Flask(__name__)
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
username = request.form['username']
return f"안녕하세요, {username}님!"
return render_template('login.html')
if __name__ == '__main__':
app.run(debug=True)
이제 /login
페이지에서 사용자의 입력을 받을 수 있습니다.
5. Flask로 간단한 게시판 만들기
마지막으로, Flask와 SQLite를 사용하여 간단한 게시판 기능을 추가해 보겠습니다.
✔ 데이터베이스 설정
import sqlite3
conn = sqlite3.connect('database.db')
cursor = conn.cursor()
cursor.execute('''
CREATE TABLE IF NOT EXISTS posts (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
content TEXT NOT NULL
)
''')
conn.commit()
conn.close()
✔ 글 작성 및 조회 기능 추가
from flask import Flask, render_template, request, g
import sqlite3
app = Flask(__name__)
DATABASE = 'database.db'
def get_db():
db = getattr(g, '_database', None)
if db is None:
db = g._database = sqlite3.connect(DATABASE)
return db
@app.route('/')
def index():
db = get_db()
cursor = db.cursor()
cursor.execute("SELECT * FROM posts")
posts = cursor.fetchall()
return render_template('index.html', posts=posts)
@app.route('/add', methods=['POST'])
def add_post():
title = request.form['title']
content = request.form['content']
db = get_db()
cursor = db.cursor()
cursor.execute("INSERT INTO posts (title, content) VALUES (?, ?)", (title, content))
db.commit()
return "게시글이 추가되었습니다!"
if __name__ == '__main__':
app.run(debug=True)
이제 브라우저에서 데이터를 입력하고 저장할 수 있는 간단한 웹 애플리케이션이 완성되었습니다.
6. 결론 (비전공자를 위한 Flask 웹 개발의 가능성)
Flask는 배우기 쉽고 가벼운 프레임워크로, 비전공자도 쉽게 웹 개발을 시작할 수 있습니다. 특히 간단한 웹 애플리케이션을 빠르게 개발할 수 있으며, REST API 구축, 데이터베이스 연동, 사용자 입력 처리 등의 기능도 손쉽게 구현할 수 있습니다.
Python을 조금만 익히면 Flask로 실전 프로젝트를 만들 수 있으며, 이를 통해 웹 개발의 기본 원리를 배우고 실무에서도 활용할 수 있습니다. Flask를 통해 여러분만의 웹 애플리케이션을 만들어 보세요!