Flask란?
- flask는 python 기반의 마이크로 웹 프레임워크이다. 마이크로는 기능이 부족하거나 한계가 있다는 의미가 아니라 짧고 간결하다는 것을 의미한다.
- flask는 간결하기에 프로젝트의 무게가 가볍다. 처음에는 모든기능을 포함하지 않기 때문이다. 하지만 필요할 때마다 개발자가 필요한 확장 모듈을 추가하여 개발할 수 있다.
- 그렇기에 flask는 자유도가 높은 프레임워크다. 규칙이 있긴 하지만 최소한의 규칙만 있어 타 프레임워크보다 자유롭다.
- flask에는 jinja를 사용할 수 있어 동적으로 HTML 코드 작성이 가능하다.
Flask 프로젝트 구조
DataBase를 처리하는 models 디렉토리
DB처리를 위해 ORM(Object Relational Mapping)을 지원하는 파이썬 데이터베이스 도구인 SQLAlchemy를 사용한다.
SQLAlchemy는 모델 기반으로 DB를 처리한다. models 디렉토리에 필요한 클래스들을 정의할 파이썬 파일들을 생성한다.
ORM을 사용하면 sql쿼리를 작성할 필요없이 파이썬 문법으로 DB를 다룰 수 있다.
서버로 전송된 폼을 처리하는 forms.py
웹 브라우저에서 서버로 전송된 폼을 처리할 때 WTForms 라이브러리를 사용한다. WTForms 역시 모델 기반으로 폼을 처리하므로 정의할 파이썬 파일이 필요하다.
WTForms 라이브러리에는 환경변수 SECRET_KEY를 이용해 CSRF 공격을 방지할 수 있다.
프로젝트 설정을 위한 config.py
프로젝트의 환경변수, DB 등의 설정을 이 파일에 저장한다.
화면 구성을 처리하는 views 디렉토리
views 디렉토리에는 화면을 구성하고 보여주는 뷰 파일들을 저장한다.
css, js, 이미지 파일을 저장하는 static 디렉토리
CSS, 자바스크립트, 이미지 파일(jpg, png) 등 정적파일들을 저장한다.
HTML 파일을 저장하는 templates 디렉토리
웹 페이지를 구성하는 HTML 파일을 모아둔 디렉토리이다.
웹 브라우저의 동작 방식
웹 브라우저가 url을 사용하여 서버에 요청하는 페이지는 크게 2가지이다.
1. 정적 페이지
css, js, jpg, png 등 정적 파일을 요청하는 것을 정적 페이지 요청이라고 한다.
2. 동적 페이지 요청
서버의 DB에 저장되어 있는 값에 따라 고정된 값이 아닌 것을 요청한다. 같은 url을 요청했는데 다른 결과를 보여주는 것을
동적 페이지 요청이라고 한다.
웹 서버의 동작 방식
웹 서버는 웹 브라우저의 url요청을 처리한다. 정적 페이지 요청의 경우는 단순히 정적 파일을 찾아 응답하지만, 동적 페이지 요청을 처리하려면 WSGI 서버가 필요하다. (WSGI는 위스키라고 읽는다)
WSGI
웹 서버는 파이썬 프로그램을 호출할 줄 모르기에 파이썬 프로그램을 호출하는 WSGI(web server gateway interface) 서버가 필요하다. 웹 서버는 WSGI 서버를 호출하고, WSGI 서버는 파이썬 프로그램을 호출하여 동적 페이지 요청을 처리한다.
WSGI 서버는 여러 종류가 있지만 Gunicorn과 uwsgi를 가장 많이 사용한다.
WSGI 서버는 웹 서버와 WSGI 애플리케이션 중간에 위치한다. 그래서 WSGI 서버는 WSGI 미들웨어 또는 WSGI 컨테이너라고도 불린다.
WSGI 애플리케이션에는 플라스크와 장고(django) 등이 있다.
'[SK Shieldus Rookies 16기] > Project' 카테고리의 다른 글
Flask 개발 환경 구축(VScode) (0) | 2023.11.03 |
---|