티스토리 뷰

Backend-dev/python

장고의 MVT 패턴

RunningWater 2018. 10. 7. 00:53

MVT 패턴은 MVC 패턴과 똑같습니다.

장고는 MVC 패턴을 기반으로 하고, 이름만 MVT 패턴이라고 이전 포스팅에서 간략하게 설명했습니다. 이번 포스팅에서 다운로드를 하기 전에 패턴에 대해서 공부하고 다음 포스팅에서 장고를 다운로드 해보겠습니다. MVC 패턴은 Model, View, Controller의 앞 글자를 딴 말로 Model에서는 데이터 저장 및 수정, 변경, 삭제 등의 일이 일어나는 데이터베이스 부분입니다. 그리고 Controller에서는 로직을 담당합니다. 데이터의 변경이 필요한 부분에서는 모델에 요청하고 그 결과값을 받고, 그냥 html 문서만 보여주면 되는 순간에 그러도록 명령합니다. View 부분이 화면의 UI를 담당하는 부분입니다. 사용자에게 실질적으로 보여지는 부분이라고 생각하시면 됩니다.

장고 MVT 도식django MVT 패턴


MVC 패턴이 장고에서는 Model, View, Template의 앞 글자를 따서 MVT라고 표현됩니다. 헷갈릴 수 있는 부분은 View와 Template입니다. MVC에서는 Controller가 로직을 담당했지만 장고에서 로직을 담당하는 부분은 View입니다. 그리고 UI를 담당했던 View 부분을 장고에서는 Template이 맡습니다.


Model은 데이터 관련, View는 로직관련, Template은 UI 관련입니다. 

왜 이런식으로 나눌까요? 

각각의 역할에 따라 나눌 수 있다면 나눈 것을 분업할 수 있습니다. 그러면 그만큼 속도가 빨라지게 됩니다. 또한 부분이 나눠져있다는 것은 가독성이 올라간다는 것을 나타냅니다. 그럼 문제가 되는 부분을 쉽게 파악할 수도 있습니다. 리액트의 경우에도 컴포넌트를 만들 때 index, presenter, Container로 나누는 패턴이 있듯이 역할에 따라 나눌 수 있으면 생산성이 더 올라가는 것 같습니다.

Model 좀 더 알아보기

튜토리얼을 실행하면 가장 먼저 만나게 되는 부분은 Model입니다. 데이터베이스에 어떤 정보를 받을 지 정하고 그걸 정의하는 것으로 시작합니다. 장고에서는 ORM이라는 기법이 있습니다. 데이터베이스를 사용할 땐 SQL언어를 사용하지만 장고에서는 이에 대응되는 파이썬 문법을 통해서 데이터베이스를 정의합니다. 좀 더 자세히 설명하면 하나의 클래스는 데이터베이스의 테이블에 해당되고, 클래스 안의 속성은 데이터베이스 테이블의 컬럼에 해당됩니다. 이렇게 연결시키는 것을 Object-Relational-Mapping이라고 하고 줄여서 ORM입니다.

View 좀 더 알아보기

View는 로직을 담당한다고 위에 설명했습니다. URL을 통한 요청이 들어오면 해당 URL에 대한 View가 실행됩니다. 이때 뷰는 함수 또는 클래스가 될 수 있습니다. class의 경우 기존에 많은 것들이 정의되어 있고 거기에 필요에 따라 덮어쓰거나 아니면 그대로 사용하면 되기 때문에 코드가 더 간단합니다. 저의 튜토리얼의 경우 클래스형 뷰를 주로 사용할 예정입니다.

Templata 좀더 알아보기

템플릿은 UI를 담당합니다. 이땐 템플릿 문법이 사용됩니다. html 태그의 경우 그대로 사용하되, 내부에서 파이썬 문법을 사용해야 할 때는 {% %}사이에 작성하면 됩니다. 어려워보이지만 이러한 것들만 잘 구분하면 금방 익히실 수 있습니다. 이뿐만 아니라 템플릿 변수도 있는데 이는 변수의 특성을 템플릿에 적용한 것입니다. {{ }} 사이에 사용합니다.

우선은 모델을 정의하고 뷰와 템플릿은 번갈아가면서 진행하게 됩니다. 위의 글들이 아직은 잘 이해가 되지 않는다면 튜토리얼을 통해서 좀 더 익히신 후에 다시 읽어보시기를 바랍니다.


공감은 제작자에게 큰 힘이 됩니다.


댓글