개요
플라스크(Flask)는 파이썬으로 웹 애플리케이션을 개발할 때 사용하는 가벼운 웹 프레임워크다.
복잡한 설정 없이 빠르게 웹 서버를 만들 수 있어, 작은 프로젝트나 프로토타입을 만들 때 많이 사용된다.
플라스크의 특징
- 간단하고 가벼움: 최소한의 기능만 포함되어 있고, 필요한 기능은 확장(Extension)으로 추가하는 방식이다.
- 유연성: 프로젝트 구조와 설계를 자유롭게 할 수 있다.
- 빠른 개발: 적은 코드로 빠르게 웹 애플리케이션을 만들 수 있다.
- 확장성: ORM(예: SQLAlchemy), 폼 처리(예: WTForms), 인증 기능 등 다양한 확장 라이브러리를 사용할 수 있다.
Flask 관점에서의 웹 애플리케이션 구성
Flask는 백엔드(서버 사이드) 프레임워크로, 클라이언트(웹 브라우저)에서 요청을 처리하고 데이터를 반환하는 역할을 한다.
웹 애플리케이션은 보통 프론트엔드(클라이언트 측)와 백엔드(서버 측), 그리고 데이터베이스(DB)로 나뉜다.
Flask는 주로 서버 로직과 데이터 처리를 담당하는 "백엔드" 영역에 해당한다.
클라이언트에서 보낸 요청을 받고, 필요한 데이터를 처리한 후 결과를 다시 클라이언트에게 반환한다.
Flask는 직접 HTML을 렌더링할 수도 있고, JSON 형태로 데이터를 반환하는 API 서버로 사용될 수도 있다.
- 클라이언트의 요청을 처리하고, 비즈니스 로직을 수행한다.
- Flask는 라우팅, 인증, 데이터 처리, 파일 업로드 등 다양한 기능을 담당한다.
- Flask에서 JSON 데이터를 반환해 REST API나 GraphQL API 서버를 만들 수도 있다.
플라스크 설치
사용하고 있는 IDE를 열고 프로젝트 생성 후 터미널에서 하기 명령어를 실행해 준다.
가상환경은 프로젝트마다 독립된 패키지 공간을 만들어, 패키지 충돌이나 의존성 문제를 방지해준다.
따라서 파이썬 프로젝트에서는 가상환경을 사용하는 게 권장된다.
pip install flask
만약 pip의 버전이 구버전이라면 하기 명령어를 통해 pip를 최신버전으로 먼저 업데이트 해주자
python.exe -m pip install --upgrade pip
기본 사용 예시
플라스크 설치가 완료 되었다면, 웹 서버 어플리케이션을 실행할 준비가 되었다.
from flask import Flask # Flask 클래스 import (웹 서버 애플리케이션 생성)
# Flask 애플리케이션 객체 생성
app = Flask(__name__)
# __name__은 현재 실행 중인 모듈의 이름을 의미
# 이 코드는 Flask가 애플리케이션의 위치를 알 수 있도록 돕는다.
# 라우팅: 특정 URL에 접속했을 때 실행할 함수 정의
@app.route('/')
def home():
# 클라이언트가 '/' URL로 접속하면 아래 문자열이 반환된다.
return "Hello, Flask!"
# 애플리케이션 실행
if __name__ == '__main__':
app.run(debug=True)
# debug=True: 코드 변경 시 서버가 자동으로 재시작되고, 에러 발생 시 디버그 화면을 띄운다.
# app.run()은 기본적으로 http://127.0.0.1:5000에서 서버를 실행한다.
위 코드를 작성하고 실행 시 실행창에 아래와 같이 출력된다면 정상적으로 서버가 구동된 것이다.
현재는 토이 프로젝트이므로 * Running on 에 기재되어 있는 주소로 접근해 보자 http://127.0.0.1:5000
해당 주소로 접근 시 home 함수의 리턴 값이 웹 화면에 출력된 것을 볼 수 있다.
여기서 127.0.0.1은 나의 로컬호스트 IP주소를 의미하며, 5000은 임의로 지정한 포트번호 5000이다.
추후 AWS EC2와 같이 별도의 서버 IP를 제공받아 로컬 환경이 아닌 원격 환경에서의 접속이 가능하다.
'웹(WEB) > 파이썬(Python)' 카테고리의 다른 글
[Python] Flask 클라이언트 PUT, DELETE 요청 처리 (0) | 2025.01.02 |
---|---|
[Python] Flask 클라이언트 POST 요청 처리 (0) | 2025.01.02 |
[Python] Flask 클라이언트 GET 요청 처리 (0) | 2025.01.02 |
[Python] Flask DB 연동 (0) | 2025.01.02 |
[Python] Flask Router, HTTP 메서드 (0) | 2025.01.02 |