장고는 MVC(Model-View-Controller)를 기반으로 한 프레임워크다. 하지만 장고에서는 같은 개념을 MTV(Model - Template - View)
라고 부른다.
참고로 MVC패턴은 데이터
(model), 사용자 인터페이스
(view), 데이터 처리 로직
(controller)을 구분해 한 요소가 다른 요소들에게 영향을 주지 않도록 설계하는 방식인데, 장고도 기본적으로 이 방식을 따르며 명칭이 조금 다를 뿐이다.
모델은 데이터베이스에 저장되는 데이터를 의미한다. excel과 같은 표의 형태로 정리하여 데이터베이스에 넣는다고 생각하면 된다. 원래 DB를 다루기 위해서는 SQL이라는 언어를 알아야하지만, 장고는 이 SQL을 몰라도 DB 작업을 가능하게 해주는 ORM을 제공하기 때문에 공부할 내용이 훨씬 적다.
ORM이란?
Object-Relational Mapping의 약자로, SQL이라는 언어 대신 데이터베이스를 쉽게 연결해주는 방법.
템플릿은 사용자에게 보여지는 부분이다. 이전 글에서 'Hello World'를 작성했던 html파일이 이 템플릿을 담당한다. 장고 템플릿 시스템 문법에 맞게 python문법을 활용하여 작성하면 되므로, 다른 작업들과 화면 디자인 작업을 분리하여 확장성을 극대화 시킬 수 있다다. 즉, 보여지는 부분을 만드는 사람은 그 부분에만 집중하여 만들 수 있게 도와주는 역할을 한다.
뷰는 웹 요청을 받고, 전달받은 데이터들을 해당 어플리케이션의 로직으로 가공하여, 그 결과를 템플릿에 보내준다. 데이터를 가공하는 처리를 해야한다 싶으면 뷰에서 함수를 작성하면 된다.
URL은 view와 template을 이어주는 역할을 하고, 이 부분을 만들어 주는 작업을 URLconf라고 한다. 장고 1.x 버전에서는 이부분에서 정규표현식을 사용해 복잡했지만, 장고 2.x 버전은 path()
함수를 이용해 그 과정을 훨씬 매끄럽게 다듬어서 공부하기 더 쉬워졌다!
Model
Template
View
자신이 하려는 작업이 무엇인지 파악하면 어느 부분을 작업해야하는지 명확해진다. MTV 패턴을 사용한 작업의 장점이다.