ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Django 프레임워크의 개념과 MTV구조
    Back-End/Django 2022. 1. 5. 22:06

    프레임워크? 장고?


    프로그래밍에 관심이 조금이라도 있는 사람이라면 '프레임워크'라는 단어를 들어봤을 것이다. 프레임워크는 그만큼 프로그래밍에 있어서 빠질 수 없는 개념이다. 하지만 많이 쓰이는 것에 비해 그 의미를 명확히 한 문장으로 줄여서 설명하기는 힘들다. 게다가 '프레임워크' 자체에 대한 이야기를 깊게 하자면 지금 한문단 정도로 끝내기는 불가능하다. 때문에 장고에 대한 이야기에 들어가기 앞서 아주 간단히 잠깐만 이야기하고자 한다.

     

    프레임워크는 단어 자체에서도 어느 정도 유추해볼 수 있듯이 프로그래밍의 기초 뼈대가 되는 개념이다. 프레임워크는 프로그래밍의 기초적인 구조를 제공해준다. 또한 해당 구조 위에 다양한 기능을 구현할 수 있도록 도와주는 여러 도구들을 제공한다. 즉, '프로그램의 구조 설계 및 효율적이고 반복적인 사용이 가능한 클래스를 제공해주는 것'이라고 생각하면 된다.

     

    프레임워크의 종류는 수없이 많다.(Spring, .NET, Rails, Flask 등) 우리는 그중 사용하고 있는 언어, 업계의 흐름, 본인의 숙련도 등 다양한 조건을 토대로 잘 선택해 이용하면 된다. Django는 python 언어를 기반으로 한 프레임워크다. 보통 파이썬 기반 프레임워크는 장고를 이용하는 곳이 많다.

     

    물론 프레임워크가 없어도 프로그램은 만들 수는 있다. 하지만... 굳이...?

     

     

     

    장고의 구조 (MTV)


    보통 백엔드 프레임워크들은 MVC(Model-View-Controller) 디자인 패턴을 가지고 있다. Spring도 그렇고, Rails도 그렇고... 하지만 장고는 MTV(Model-Template-View) 디자인 패턴을 가지고 있다. 이름만 다를 뿐 MVC와 거의 흡사하다. 머릿속에서 매칭만 잘 시켜주면 큰 어려움 없이 이해할 수 있다. 

     

    MVC는 Model-View-Controller의 줄임말이다. 즉, 프로그램 개발에 있어 그 역할을 모델, 뷰, 컨트롤러 세 가지 역할로 나눠놓은 디자인 패턴을 뜻한다. 그렇다면 장고의 MTV는 어떤 것을 의미할까? 살펴보도록 하자.

     

    Model

    MVC 패턴의 Model에 대응하는 개념이다. 장고는 기본적으로 ORM을 지원한다. 덕분에 장고에서는 SQL문을 굳이 다루지 않더라도 파이썬 코드로 데이터를 다룰 수 있다. 하나의 테이블을 Model 내부의 class로 정의하고, 해당 클래스는 실제 DB Table과 연동된다.

     

    Template

    MVC 패턴의 View에 대응하는 개념이다. HTML 파일들을 통해 이용자가 시각적으로 확인할 수 있는 화면들을 보여준다. 즉, UI를 담당하는 부분이라고 볼 수 있다. 사실상 MVC패턴의 View과 같은 역할을 한다고 볼 수 있다. 

     

    View

    MVC 패턴의 Controller에 대응하는 개념이다. MVC의 View와 이름은 같으나 앞서 이야기했듯 MVC의 View에 대응되는 것은 Template고, MTV의 View는 Controller에 해당한다는 것을 명심해야 한다.

     

    조금 쉬운 이해를 위해 도식화된 그림을 통해 살펴보자.

     

    출처: MDN 웹문서 Django 소개글

     

    HTTP Request가 들어와서 Response 되는 과정이 잘 설명되어있다. 근데 앞서 이야기 한 MTV 외에 익숙하지 않은 부분이 눈에 띈다. 바로 URLS(urls.py)다. 장고는 여러 URL들을 urls.py 파일에 따로 모아 한 번에 관리한다. 때문에 HTTP Request가 들어오면 urls.py를 한번 거쳐 적절한 View로 바로 넘어가거나, 아니면 url param과 같은 데이터를 처리해 View로 보낸다.

     

    Django는 위와 같이 Model, Template, View(그리고 URLS)로 구성되어있다. 장고 프레임워크를 공부할 때, 이 구조를 파악하는 것이 가장 중요하다. 사실상 이 구조를 이해하지 못하면 해당 프레임워크는 물론, 유사한 디자인 패턴을 가지고 있는 타 프레임워크 또한 이용하기 힘들 것이다.

     

    이 구성요소들만 이해하고 있다면 '잘'까지는 아니더라도 '얼추' 장고를 파악하고 이용할 수 있으니, 제대로 공부해두도록 하자.

    댓글

Designed by Tistory.