웹 프로그램 개발 시 일반적으로 언급되는 MVC 패턴의 개념을 Django Framework에서 그대로 받아오는 대신 용어를 바꿔 사용하고 있는 개발 패턴이라고 할 수 있다.
MVC 패턴이란?
사용자 인터페이스, 데이터 및 논리 제어를 구현하는데 널리 사용되는 소프트웨어 디자인 패턴으로, 소프트웨어의 비즈니스 로직과 화면을 구분하느데 중점을 두고 있으며, MTV 패턴과 마찬가지로 MVVM, MVP 등 다른 디자인 패턴의 기반이 되기도 한다.
MVC 패턴은 크게 3가지 부분으로 설명할 수 있다.
- 모델(Model) : 데이터와 비즈니스 로직을 관리
- 뷰(View) : 레이아웃과 화면을 처리
- 컨트롤러(Controller) : 명령을 모델과 뷰 부분으로 라우팅
Django Framework에선 크게 Model, Template, View, URLconf까지 4가지 부분으로 역할을 나눌 수 있다. 기본적으로 MVC와 크게 다를 것은 없지만, Django Framework의 경우 View와 URLconf가 Controller의 역할을, Template이 View의 역할을 한다는 점에서 차이가 있다.
웹 클라이언트의 요청을 받고, Django에서 MTV 패턴에 따라 처리하는 과정을 요약하자면 다음과 같다.
Django에서의 모델은 사용될 데이터에 대한 정의를 담은 클래스를 의미한다. 특히 Django는 ORM 기법을 사용해 SQL 없이 DB에 접근해 애플리케이션(단위 프로그램)에 사용할 데이터를 끌어올 수 있다.
ORM(Object-Relational Mapping)이란?
ORM은 객체과 관계형 데이터베이스를 연결하는 것을 의미한다. 따라서 SQL을 작성하여 DB에 접근하는 것이 아닌 객체를 통해 DB에 접근함으로써 코드의 가독성을 높이고 생산성을 증가시킬 수 있다 .
클라이언트로부터 요청을 받으면 Django에선 제일 먼저 요청이 들어온 URL을 정의한 URL 패턴과 매칭되는지 분석한다.
Django에서 URL을 분석하는 과정은 다음과 같다.
일반적으로 View는 웹 요청을 받아 DB에 접속하는 등 해당 애플리케이션의 로직에 맞는 처리를 하고, 그 결과를 HTML로 변환하기 위한 템플릿 처리를 한 뒤, 최종 HTML로 된 응답 데이터를 웹 클라이언트로 반환하는 역할을 한다.
Django에서는 함수 또는 클래스의 메소드 형식으로 작성된다.
개발자가 응답에 사용할 HTML 파일을 작성하면, Django가 이를 해석해 최종 HTML 텍스트 응답을 생성하고, 이를 클라이언트는 응답으로 받은 HTML 텍스트를 해석하여 웹 브라우저에 UI를 보여준다.