Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
Tags
- TS
- 공부할 거 넘많다~
- axios
- js
- 차이점
- Next.js
- git flow finish
- freecodecamp
- HTML
- 서버 컴포넌트
- javascript30
- Mac
- 실무는 공식문서로
- 클라이언트 컴포넌트
- 끝까지 잘 마무리하기
- Main
- 힘들었던 한주
- 개발일지
- 백준
- JavaScript
- 책으론 원리만
- fetch pull 차이
- CSS
- api 라우트
- 바닐라JS
- git
- 다시 홧팅
- git flow start
- AJAX
- jQuery
Archives
- Today
- Total
다다의 개발일지 6v6
Flask - Python으로 만든 가벼운 웹 프레임워크 본문
Flask란?
Flask는 Python으로 만든 경량 웹 프레임워크이다. -> 웹 애플리케이션을 만들 수 있도록 도와주는 도구.
Django처럼 대형 프레임워크가 아니라, 필요한 기능을 선택적으로 추가할 수 있는 간단한 웹 프레임워크이다.
Flask의 특징
- 경량(minimal)하고 유연함
- Flask는 기본적으로 가벼운 구조를 가지고 있어서, 필요한 기능만 추가해서 사용.
- 핵심 기능만 포함하고 있고, 필요하면 추가 패키지를 설치해서 확장할 수 있음.
- 빠르고 간단함
- 코드가 간결해서 초보자도 쉽게 배울 수 있다.
- 웹 애플리케이션을 빠르게 개발할 수 있는 구조를 제공.
- Jinja2 템플릿 엔진 제공
- HTML 코드 안에 {{ 변수 }} 같은 문법을 넣어서 동적인 웹 페이지를 만들 수 있음.
- WSGI 기반 & Werkzeug 사용
- WSGI(Web Server Gateway Interface) 기반으로 만들어져 있어서 다양한 웹 서버에서 실행 가능.
- 내부적으로 Werkzeug라는 라이브러리를 사용해서 요청과 응답을 관리.
- REST API 개발에 적합
- Flask는 JSON 응답을 쉽게 만들 수 있어서, 백엔드 API 개발에 많이 사용된다.
- fetch, axios 같은 JavaScript 라이브러리와 함께 클라이언트-서버 통신할 때 유용함.
Flask 기본 코드 예제
아래는 Flask를 이용해서 간단한 웹 서버를 만드는 코드.
1️⃣ Flask 설치
pip install flask
2️⃣ 간단한 웹 애플리케이션 만들기
from flask import Flask
app = Flask(__name__) # Flask 객체 생성
@app.route('/') # 루트 URL ('/')에 대한 라우트 설정
def home():
return "Hello, Flask!" # 브라우저에서 확인할 메시지
if __name__ == '__main__':
app.run(debug=True) # 서버 실행 (디버그 모드 활성화)
✅ 실행 방법
위 코드를 app.py로 저장한 후, 터미널에서 실행하면 됨.
python app.py
브라우저에서 http://127.0.0.1:5000/ 에 접속하면 "Hello, Flask!" 메시지를 확인할 수 있음
Flask에서 중요한 개념
1️⃣ 라우팅 (Routing)
- 특정 URL을 요청하면, 어떤 함수를 실행할지 정하는 역할.
- 위 코드에서 @app.route('/')는 사용자가 루트 URL에 접속했을 때 실행될 함수를 지정함.
@app.route('/about')
def about():
return "About Page"
/about에 접속하면 "About Page"가 출력됨.
2️⃣ 동적 라우팅
- URL에 변수를 넣어서 동적으로 데이터를 전달할 수도 있음.
@app.route('/user/<username>')
def show_user(username):
return f"Hello, {username}!"
http://127.0.0.1:5000/user/Alice 로 접속하면 "Hello, Alice!" 출력됨.
3️⃣ HTML 템플릿 사용
Flask는 Jinja2 템플릿 엔진을 제공해서, 동적인 HTML을 만들 수 있다.
📌 템플릿 파일 생성 (templates/index.html)
<!DOCTYPE html>
<html>
<head>
<title>Flask Page</title>
</head>
<body>
<h1>Hello, {{ name }}!</h1>
</body>
</html>
📌 Flask에서 템플릿 렌더링
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/hello/<name>')
def hello(name):
return render_template('index.html', name=name) # HTML 파일에 변수 전달
if __name__ == '__main__':
app.run(debug=True)
/hello/Alice로 접속하면 "Hello, Alice!"가 웹페이지에 표시됨.
4️⃣ JSON 데이터 응답 (REST API)
Flask는 REST API 개발에도 많이 쓰인다.
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/api/data')
def get_data():
data = {"name": "Alice", "age": 25}
return jsonify(data) # JSON 응답 반환
if __name__ == '__main__':
app.run(debug=True)
/api/data에 접속하면 다음과 같은 JSON 데이터가 반환됨:
{
"name": "Alice",
"age": 25
}
fetch()나 axios.get('/api/data')로 클라이언트에서 가져올 수 있음.
Flask vs Django
| Flask | Django | |
| 철학 | 가볍고 유연한 마이크로 프레임워크 | 기능이 많은 대형 프레임워크 |
| 구성 요소 | 필요한 기능만 추가해서 사용 | ORM, 관리자 페이지 등 기본 기능 포함 |
| 템플릿 엔진 | Jinja2 사용 | Django Template Language 사용 |
| REST API | 가볍고 빠르게 만들 수 있음 | Django REST Framework(DRF) 필요 |
| 적합한 프로젝트 | 작은 프로젝트, API 서버 | 대형 웹 서비스, 복잡한 데이터 모델 |
✅ Flask는 작은 규모의 프로젝트나 API 개발에 적합하고, Django는 대규모 웹 애플리케이션에 적합하다.
Flask로 할 수 있는 것
- 간단한 웹사이트 제작
- REST API 개발 (백엔드 서버 역할)
- IoT, 데이터 시각화, 머신러닝 모델 배포 등 다양한 분야에서 사용 가능