
Django의 핵심 구성 요소
Django : 데이터(Model)를 로직(View)에 따라 처리해 유저에게 보여준다(Template)
Template 레이어는 프론트엔드를 나타냄. → 주 사용 목적은 백엔드를 구축하기 위함이므로, Model과 View에 신경 써야 함.
Model
웹서비스가 반복적으로 저장하고 활용할 데이터의 구조를 파이썬 클래스로 표현할 수 있도록 장고에서 제공하는 API
- 모든 클래스는 django.db.models.Model의 subclass로 구현.
- 작성한 대로 기능하는 일종의 DB 접근 API
- ORM(Object-Relational Mapping) 기능 수행
- 하나의 모델 클래스는 하나의 DB 테이블과 대응
- 모델 클래스의 모든 attribute는 각각의 DB 필드가 됨.
- 모델 구현 사항 변경 내역을 통해 DB 스키마를 변경하는 migration 기능
- 마이그레이션(migration)이란 한 종류의 DB에서 다른 종류의 DB로 데이터를 옮기는
Views
유저의 HTTP 요청을 받아 내부적으로 처리 후, 다시 HTTP 응답을 돌려주기까지의 로직을 담당
- 크게 두 가지 파트로 구성
- URL dispatcher : 요청의 URL을 보고 대응하는 파이썬 함수
- View Functions : URL dispatcher를 거쳐 넘어온 요청을 처리하는 함수들
- URL Dispatcher (요청 라우팅)
- url 모듈에 정의된 대로 작동
- 해당 모듈 내 urlpatterns 라는 변수 이름을 가진 리스트를 탐색
- 요청 URL이 들어오면, 해당 리스트에 순서대로 정의된 패턴 중 가장 먼저 매치된 패턴에 따라 요청이 매핑된 View function으로 routing됨.
- View function (로직)
- 들어온 HTTP 요청을 기반으로 모델에 들어있는 데이터를 조회하고 필요 시 가공해 그 결과를 유저에게 HTTP 응답의 형태로 다시 전달.
- 리턴 타입은 반드시 HttpResponse 객체
- FBV(Function Based View)와 CBV(Class Based View)가 있음: FBV는 단일 파이썬 함수, CBV는 Django에서 추상화한 클래스 인터페이스들을 상속받아 활용할 수 있음.
Templates
Django에서 HTTP 요청의 처리 결과를 유저에게 보여줄 형태(주로 HTML 문서로 표현된 웹페이지)로 가공하는 레이어