Flask는 파이썬으로 웹 애플리케이션을 개발하기 위해 사용되는 간단하고 유연한 마이크로 프레임워크입니다. 이 블로그 포스트에서는 Flask를 사용하여 파이썬으로 웹 서버를 구축하는 방법에 대해 살펴보겠습니다.
Flask 설치하기
먼저, Flask를 설치해야 합니다. 아래의 명령어를 사용하여 Flask를 설치할 수 있습니다.
pip install flask
Hello World 웹 애플리케이션 만들기
Flask를 사용하여 간단한 Hello World 웹 애플리케이션을 만들어보겠습니다.
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return "Hello, World!"
if __name__ == '__main__':
app.run()
Flask
모듈을 임포트합니다.Flask
객체를 생성합니다.@app.route()
데코레이터를 사용하여 루트 URL(‘/’)에 대한 핸들러를 등록합니다. 이 핸들러는 ‘Hello, World!’를 반환합니다.if __name__ == '__main__':
문을 사용하여 스크립트가 직접 실행될 경우에만 웹 서버를 실행합니다.
위의 코드를 app.py
라는 이름의 파일에 저장한 후, 아래의 명령어를 실행하여 웹 서버를 실행할 수 있습니다.
python app.py
웹 서버가 실행되면, 웹 브라우저에서 http://localhost:5000
주소로 접속하여 ‘Hello, World!’를 확인할 수 있습니다.
정적 파일 사용하기
Flask를 사용하여 정적 파일(예: CSS, JavaScript 파일)을 서비스할 수 있습니다. 정적 파일은 static
디렉토리 아래에 위치시킵니다.
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def home():
return render_template('index.html')
if __name__ == '__main__':
app.run()
위의 코드에서 render_template
함수를 사용하여 templates/index.html
을 렌더링합니다. 이때, templates
디렉토리는 Flask에 의해 자동으로 인식됩니다.
데이터베이스 연동하기
Flask는 다양한 데이터베이스와의 연동을 지원합니다. 가장 일반적으로 사용되는 데이터베이스 중 하나인 SQLite와의 연동 예시를 살펴보겠습니다.
import sqlite3
from flask import Flask, render_template, g
DATABASE = 'mydb.db'
app = Flask(__name__)
def get_db():
db = getattr(g, '_database', None)
if db is None:
db = g._database = sqlite3.connect(DATABASE)
return db
@app.teardown_appcontext
def close_db(exception):
db = getattr(g, '_database', None)
if db is not None:
db.close()
@app.route('/')
def home():
cursor = get_db().cursor()
cursor.execute('SELECT * FROM users')
users = cursor.fetchall()
return render_template('index.html', users=users)
if __name__ == '__main__':
app.run()
위의 코드에서는 sqlite3
모듈을 사용하여 SQLite 데이터베이스에 연결하고, get_db
함수를 통해 데이터베이스 커넥션을 가져옵니다. 이후 teardown_appcontext
데코레이터를 사용하여 애플리케이션이 종료될 때 데이터베이스 연결을 닫습니다. 마지막으로, 데이터베이스에서 users
테이블을 조회한 결과를 템플릿으로 전달하여 화면에 표시합니다.
결론
이렇게 Flask를 사용하여 파이썬으로 웹 서버를 구축할 수 있습니다. Flask는 간단하고 가볍지만 매우 유용한 툴입니다. 관심 있는 분들은 공식 문서를 참고하여 더 많은 기능과 사용 방법을 살펴보시기 바랍니다.
참고 문서: