장고는 MVC(Model-View-Controller)를 기반으로 한 프레임워크이다. 하지만 장고에서는 이 디자인 패턴을 MTV(Model-Template-View)라고 한다.
Model(모델)
•
MVC 패턴의 모델에 대응되며, DB에 저장되는 데이터를 의미한다. 모델은 클래스로 정의되며 하나의 클래스가 하나의 DB Table이다.
원래 DB를 조작하기 위해선 SQL을 다룰 줄 알아야 하지만 장고는 ORM(Object Relational Mapping)기능을 지원하기 때문에 파이썬 코드로 DB를 조작할 수 있다.
Template(템플릿)
•
MVC 패턴의 뷰에 대응되며, 유저에게 보여지는 화면을 의미한다. 장고는 뷰에서 로직을 처리한 후 html 파일을 context와 함께 렌더링하는데 이 때의 html 파일을 템플릿이라 칭한다.
장고는 자체적인 Django Template 문법을 지원하며 이 문법 덕분에 html 파일 내에서 context로 받은 데이터를 활용할 수 있다.
URLconf(URL 설계)
•
URL은 view와 template을 이어주는 역할을 하고, 이 부분을 만들어 주는 작업을 URLconf라고 한다. URLconf는 URL 패턴을 정의하여 해당 URL과 view를 매핑하는 단계라고 생각하면된다.
View(뷰)
•
MVC 패턴의 컨트롤러에 대응되며, 웹 요청에 따라 적절한 로직을 수행하여 결과를 템플릿으로 렌더링하며 응답합니다. MTV 요소 중 머리를 담당한다고 생각하자.
1.
유저가 특정 url로 요청을 보낸다.
2.
urlConf를 통해 해당 url과 매핑된 뷰를 호출한다.
3.
호출된 뷰는 요청에 따라 적절한 로직을 수행하며 그 과정에서 모델에게 CRUD를 지시한다.
4.
모델은 ORM을 통해 DB와 소통하며 CRUD를 수행한다.
5.
그 후 뷰는 지정된 템플릿을 렌더링하고,
6.
최종 결과를 응답으로 반환한다.
정리
•
데이터저장 형태를 어떻게할지 설정하겠다. → Model
•
유저에게 보여지는 화면을 고치고 싶다. → Template
•
데이터를 처리해서 가공하고 싶다. → View
•
가공한 데이터를 유저가 보는 화면으로 넘겨주고 싶다. → URLconf