장고가 빠른 이유는 MTV(Model-Template-View)의 룰을 따른다고 합니다.
이는 앱개발 등에서 따르는 MVC(Model-View-Controller) 디자인 패턴과 유사한 방식입니다.
그럼 MVC란 무엇인가?
그림 출처. 생활 코딩 |
제가 아는 바로 간단하게 말하자면, 하나의 프로젝트를 생성하기 위해 로직의 핵심이 되는 Model을 생성하고, 사용자가 Controlloer를 조작했을 때, 모델에 변화를 주라는 시그널을 주면, 그 모델이 변화를 적용하여 시각적으로 드러나는 View에 적용하게 시그널을 보내는 방식을 말합니다(물론 컨트롤러가 모델이 아닌 뷰에 직접 시그널을 줄 수도 있습니다).
조작부, 데이터 처리부, 시각적 구현부를 따로 두어 독립적이면서도 상호작용하게 하는 방식입니다.
장고의 MTV는 이와는 비슷하면서도 좀 다른데요, 일반적으로는 Model은 비슷한 의미로서, 테이블을 정의하는데 쓰이고, Template은 MVC의 View와 유사한 것으로 화면의 모습을 정의합니다. View는 MVC의 Controller와 비슷한 의미로서 어플리케이션의 제어를 처리하는 부분입니다.
앞서 생성한 startproject에서
모델은 models.py
템플릿은 template 폴더에 html 형식으로
뷰는 views.py 에 저장되게 됩니다.
이렇게 장고는 제작에 필요한 파일과 골격을 알아서 생성해주고, 개발자는 그 내용만을 넣어주면 되기에 편하다고 하는 건가 봅니다.
틀은 이렇게 결정지어 졌고, 개발자가 그 내용을 채워넣는 순서는 어떻게 될까요?
정해진 것은 없지만 일반적으로 시각정보를 나타내는 template과 그것을 조작하는 방법인 view는 서로 긴밀한 관계이므로, 비교적 독립적인 model부를 먼저 구현하고, 차차 진행해 나가게 되는 것 같습니다.
그러므로 정리해 보면,
1. 뼈대 만들기(이미 앞에서 한 바로 그 과정)
2. 모델 작업: 테이블 관련 사항 (models.py,admin.py)
3. URLconf 코딩: URL및 뷰 매핑 관계 정의(urls.py)
4. 뷰 코딩: 애플리케이션 로직 개발(views.py)
5. 템플릿 코딩: 화면 UI(html..)
의 순서라 하겠습니다.
그럼 앞으로 만들게 될 각각의 파일들이 대략 무엇을 하는 것들인지 잠시 살펴보고 가겠습니다.
1. models.py
테이블을 정의하는 파일입니다.
장고는 테이블을 하나의 클래스로 정의하고, 테이블의 컬럼을 클래스의 변수로 매핑하는 ORM(Object Relation Mapping) 기법을 사용한다고 합니다.
테이블의 신규 생성, 정의 변경 등이 일어나 데이터베이스를 변경해야 하면 이를 실제로 적용하기 위해 migrate 명령을 사용합니다.(이미 앞서 프로젝트 첫 생성 시 해 본 것입니다)
2. admin.py
테이블의 내용을 열람하고 수정하기 위해 필요합니다.
3. URLconf
url과 view를 매핑해주는 urls.py 파일입니다.
4. views.py
뷰 로직을 코딩하는 파일입니다.
함수형 뷰(function-based view)와 클래스형 뷰(class-based view)의 두 가지로 나뉩니다.
5. template
웹페이지 별로 모양을 구성하는 템플릿(html)이 필요합니다.
* runserver란?
장고에서 현재의 개발 과정을 알아볼수 있도록 제공하는 테스트 서버.
상용 프로젝트를 오픈할 때에 Apache, Nginx 등의 상용웹서버를 사용해야 함
댓글 없음:
댓글 쓰기