[Flask] flask backend 템플릿 구조

2024. 7. 24. 10:59· 개발
목차
  1. app, main
  2. model, record
  3. config, common, i18n

flask-jinja-sqlalchemy 가 플라스크의 기본 구조이고 필요에 따라서 DB 나 front 를 바꿀 수 있다. 이번 글에서는 백엔드를 어떤식으로 모듈들을 구성해 두는지 확인해보도록 하겠다. 

 

 

 

app, main

app 모듈은 app.run 으로 해당 서버를 실행하는 역할을 수행한다. 또 --set-config  같은 argument 를 세팅해두는 역할, 필요한 thread 를 돌리는 역할 등을 수행한다. main 모듈은 모든 요청의 사전 처리인 @main.before_request 를 사용해서 규정에 맞는 요청이 들어왔는지를 확인한다. 또한 이 before_request 에서는 csrf_token이 유효한지, 수많은 요청들의 proxy 기능, session 만기 설정, locale 및 ORM 에 사용될 DB 설정 등 마치 spring 의 dispatcherservlet 같은 역할을 수행한다. 또한 후에 front 편에서 다룰 formfor 등을 정의해두기도 한다. 이외에 main_scan_task 나 main_dashboard 같이 프록시한 요청의 endpoint 를 따로 모듈화해서 만들어두는 편이다. 

 

model, record

model 모듈에는 DB 의 table 정보와 attribute 정보가 들어간다. 해당 모듈을 기반으로 ORM 을 진행하고, DB schema 를 초기에 선언해주고 업데이트를 하는 역할을 한다(init_db, migrate_db). table 은 class 에 매핑되고, 이 각각의 클래스에는 validate 라는 함수가 들어갈 수 있는데, 해당 함수는 DB 와 해당 객체의 상태가 동기화가 잘 되어서 유효한 정보인지를 확인하는 역할을 한다. Record 모듈은 이 역시 ORM 에 사용되는 것으로 model 모듈의 각 table 클래스가 상속을 받아 사용한다. 여기서 회사내의 규칙을 설정(이를테면 class User 로 설정된 테이블을 실제 DB 에는 Users 로 설정을 하기)하고 validate 를 해주는 역할을 한다.

 

config, common, i18n

config 는 간단하게 해당 플라스크 서버의 중요한 flag 들을 저장해두는 곳이다. 이곳에는 버전정보, 포트, DB URL, local, key_path, ca_cert 등의 정보가 들어간다.  common 모듈에는 필요하지만 어디엔가 속하기 힘든 친구들이 모여있는 잡동사니 같은 느낌이다. i18n 모듈은 locales/en.yml 과 함께 사용되며 before_request 단계에서 언어를 설정한다. 여기서는 MainBlueprint 와 같은 것을 사용해 url 에서 ko, en 같은 요청되는 언어를 인식해서 적절하게 언어를 세팅해주는 역할을 한다. 

 

 

 

 

기본적인 모듈만을 설명했고 필요에 따라서 더한 모듈이 추가될 수 있다. 다음에는 프론트와 패키징 구조에 대해서도 설명해보도록 하겠다. 

'개발' 카테고리의 다른 글

[wix] flask 프로젝트 윈도우 패키징  (1) 2024.09.13
[Flask] Frontend 템플릿 Jinja 구조  (0) 2024.07.25
[WIX] Major upgrade, Minor upgrade 조건과 차이  (2) 2024.07.24
[Window] win32api, Microsoft installer  (0) 2023.10.12
[개발] Lock 과 동시성(python)  (0) 2023.09.18
  1. app, main
  2. model, record
  3. config, common, i18n
'개발' 카테고리의 다른 글
  • [wix] flask 프로젝트 윈도우 패키징
  • [Flask] Frontend 템플릿 Jinja 구조
  • [WIX] Major upgrade, Minor upgrade 조건과 차이
  • [Window] win32api, Microsoft installer
yeonlee
yeonlee
yeonlee
이연
yeonlee
전체
오늘
어제
  • 분류 전체보기 (85)
    • 개발 (6)
      • Android Studio (15)
      • Java (15)
      • C (17)
      • HTML,PHP,JS (0)
    • 프로젝트 (1)
    • 일상 (2)
    • CS (27)
      • DB (9)
    • 정보보안기사 (0)
      • 시스템보안 (0)
      • 네트워크보안 (0)
      • 어플리케이션보안 (0)
      • 정보보안일반 (0)
      • 정보보안관리 및 법규 (0)
    • 코딩테스트 (0)
    • 잡동사니 (0)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

  • https://velog.io/@tktnskan/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%EC%93%B0%EB%A0%88%EB%93%9C
  • https://developer.mozilla.org/en-US/docs/Web/HTTP/Messages
  • https://hazel-developer.tistory.com/145
  • ㅇㄹ
  • 자기계발 대학생 명상캠프
  • http://blog.skby.net/cpu-%EB%B9%84%EC%84%A0%EC%A0%90-%EC%8A%A4%EC%BC%80%EC%A4%84%EB%A7%81-%EA%B8%B0%EB%B2%95/

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.1
yeonlee
[Flask] flask backend 템플릿 구조
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.