May 29, 2020 ( last updated : May 30, 2020 )
Python
Django
Web
https://github.com/sneakstarberry/
장고의 MVT 디자인 패턴에 대해 알아본다.
MVT가 무엇인지 알기 전에 디자인 패턴이 무엇인지 간단히 알고 가도록 하겠습니다. 디자인 패턴은 일반적으로 우리가 알고 있는 디자인을 의미하지 않고 ‘소프트웨어 공학’의 개념을 의미합니다.
이런 디자인 패턴이 중요한 이유는 바로 ‘이름’에 있습니다. 코딩을 하다보면 변수 이름 하나를 짓는 것 조차 고민이 될 때가 있습니다. 어떤 이름이 다른 사람한테 명확하게 읽히는지 고민을 하게 됩니다. 만약 사람들이 이름없이 그 대상의 개념적인 내용을 말하면서 대화를 나누게 된다면 어떻게 될까요?
예를 들면 허수아비라고 합시다. 하지만 허수아비라는 이름이 없다면 어떻게 우리는 대화를 나눌까요? “그 내가 말이야! 논을 지나가다가 새를 쫒아주는 인간모양의 인형을 봤는데 아주 웃기더라고!”, “아~ 그 도둑도 어느정도 방지하는 그 인형?” 그냥 허수아비라고 하면 될 것을 “새를 쫒아주는 인간모양의 인형”이라고 말을 하게 됩니다. 그뿐만 아니라 정해진 형태로 지칭을 하는 것이 아닌 다른 말로도 바뀌기도 합니다.
그래서 디자인 패턴은 개념을 이름으로 정의하여서 함께 협업을 하는 사람들 끼리 빠르게 의사소통을 하고 설명을 용이하게 하기위해 쓰입니다. 물론 이 내용이 디자인 패턴의 전부는 아닙니다. 아주 일부분이죠.
디자인 패턴에 주로 쓰이는 패턴은 MVC패턴이지만 장고에서는 V와 C 부분을 Template, View로 치환하여 사용합니다. 위 사진과 같은 관계를 가집니다. MVT에서 M은 모델(MODEL)이고 V는 뷰(VIEW)이고 마지막으로 T는 템플릿(TEMPLATE)입니다.
모델은 DB와 연결이 되어서 데이터의 형태를 정할 때 이용됩니다. 이때 class를 기반으로 데이터의 형태를 정합니다. 우린 모델에 class를 정의함으로서 DB 혹은 sql에 대한 이해 없이도 원하는 데이터를 이용할 수 있게 됩니다. 데이터를 이용하는데에 있어서는 대표적으로 CRUD가 있습니다.
CRUD는 어떤 단어들의 약자입니다. 먼저 C는 CREATE를 말하고 R은 READ, U는 UPDATE, D는 DELETE를 의미합니다. 왜 이 네개의 단어가 중요한지 궁금하다면 웹을 사용하면서 이뤄지는 행동을 크게 나눌 때 이 CRUD를 벗어나는 행위가 있는지 생각해보면 알 수 있을 것입니다. 어떤 것을 하던지 만들고(Create) 읽고(Read) 수정(Update)하고 삭제(Delete)하는 행위 안쪽에 있습니다. 그렇기 때문에 CRUD는 중요하고 독자분이 계속해서 프로그래밍을 한다면 피할 수 없는 개념입니다.
뷰는 클라이언트로 부터 요청을 받아 해당 요청에 알맞은 행동을 수행하고 클라이언트가 요구한 데이터를 돌려준다.
템플릿은 보이는 화면을 정의해 줍니다. 일반 html과 다른 점은 장고 템플릿 태그를 이용함으로서 동적 페이지를 만들 수 있다는 것입니다. 동적 페이지와 그와 대비되는 정적 페이지에 대해서는 다른 포스팅에서 다루었습니다.
이상입니다.
Originally published May 29, 2020
Latest update May 30, 2020
Related posts :