웹 개발은 현대 소프트웨어 개발의 중요한 부분입니다. 다양한 언어와 프레임워크가 존재하지만, Python은 그 간결함과 강력한 기능으로 인해 많은 개발자들에게 사랑받고 있습니다. 이번 글에서는 Python을 사용한 웹 개발, 특히 Flask 프레임워크 입문에 대한 글을 써 보겠습니다.
1. Flask란 무엇인가?
Flask는 Python으로 작성된 마이크로 웹 프레임워크입니다. ‘마이크로’라는 이름답게 Flask는 최소한의 코드로 웹 애플리케이션을 구축할 수 있도록 설계되었습니다. 그러나 이는 Flask가 기능적으로 제한적이라는 의미가 아닙니다. 오히려 Flask는 필요에 따라 다양한 확장 기능을 추가할 수 있도록 유연하게 설계되어 있습니다.
2. Flask의 장점
- 간결함과 유연성: Flask는 개발자가 필요로 하는 기능만을 선택적으로 사용할 수 있게 합니다. 이는 프로젝트에 따라 맞춤형 웹 애플리케이션을 쉽게 구축할 수 있도록 합니다.
- 강력한 커뮤니티와 확장성: Flask는 많은 개발자들에 의해 사용되고 있으며, 다양한 확장 기능이 커뮤니티에 의해 제공되고 있습니다. 이러한 확장 기능들은 데이터베이스, 인증, 양식 처리 등 다양한 기능을 손쉽게 구현할 수 있게 도와줍니다.
- 학습 곡선이 낮다: Flask는 상대적으로 간단한 구조를 가지고 있어, 웹 개발을 처음 접하는 사람도 쉽게 배울 수 있습니다.
3. Flask 설치하기
Flask를 사용하기 위해서는 먼저 Python과 pip가 설치되어 있어야 합니다. 이후 아래의 명령어를 사용해 Flask를 설치할 수 있습니다.
pip install Flask
4. 첫 번째 Flask 애플리케이션 만들기
Flask 애플리케이션을 만드는 것은 매우 간단합니다. 다음은 간단한 “Hello, World!” 애플리케이션의 예제입니다.
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return "Hello, World!"
if __name__ == '__main__':
app.run(debug=True)
이 코드를 app.py
라는 파일로 저장하고, 터미널에서 python app.py
를 실행하면 로컬 서버가 시작됩니다. 웹 브라우저에서 http://127.0.0.1:5000/
에 접속하면 “Hello, World!” 메시지를 볼 수 있습니다.
5. Flask의 주요 기능
5.1. 라우팅
라우팅은 URL과 함수(뷰)를 연결하는 작업입니다. 위 예제에서 @app.route('/')
데코레이터는 루트 URL (‘/’)에 접속하면 hello
함수가 실행되도록 설정합니다.
5.2. 템플릿 렌더링
Flask는 Jinja2라는 템플릿 엔진을 사용하여 HTML 파일을 렌더링합니다. 예를 들어, 다음과 같이 templates
폴더에 index.html
파일을 생성합니다.
<!-- templates/index.html -->
<!doctype html>
<html>
<head>
<title>Hello</title>
</head>
<body>
<h1>Hello, {{ name }}!</h1>
</body>
</html>
그리고 이를 렌더링하는 Flask 코드는 다음과 같습니다.
from flask import render_template
@app.route('/hello/<name>')
def hello_name(name):
return render_template('index.html', name=name)
/hello/Flask
에 접속하면 “Hello, Flask!”라는 메시지가 표시됩니다.
5.3. 폼 처리
웹 애플리케이션에서 폼 데이터를 처리하는 것은 매우 일반적인 작업입니다. Flask에서는 request
객체를 사용하여 폼 데이터를 처리할 수 있습니다.
from flask import request
@app.route('/submit', methods=['POST'])
def submit():
username = request.form['username']
return f"Hello, {username}!"
HTML 폼을 통해 데이터를 제출하고 이를 처리할 수 있습니다.
<!-- templates/form.html -->
<!doctype html>
<html>
<body>
<form action="/submit" method="post">
<label for="username">Username:</label>
<input type="text" id="username" name="username">
<input type="submit" value="Submit">
</form>
</body>
</html>
6. 데이터베이스 연동
Flask는 다양한 데이터베이스를 연동할 수 있도록 지원합니다. 일반적으로 SQLAlchemy와 같은 ORM(Object Relational Mapping) 라이브러리를 사용합니다. SQLAlchemy를 사용하면 데이터베이스 작업을 더욱 쉽게 할 수 있습니다.
pip install flask_sqlalchemy
다음은 간단한 예제입니다.
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)
username = db.Column(db.String(80), unique=True, nullable=False)
def __repr__(self):
return f'<User {self.username}>'
db.create_all()
결론
Flask는 Python으로 웹 애플리케이션을 개발할 때 매우 유용한 프레임워크입니다. 간단한 설치와 사용법, 강력한 확장성 덕분에 초보자부터 전문가까지 모두에게 적합합니다. Flask를 통해 웹 개발의 세계에 입문하고, 더 복잡한 애플리케이션을 구축해보세요. 여러분의 창의력을 발휘해 멋진 웹 애플리케이션을 만들어보시길 바랍니다.