python/django

[Django] MTV 패턴

바디스 2020. 7. 13. 17:23

MVC 패턴과 MTV 패턴

파이썬에서는 자바에서 자주 사용되는 MVC 패턴을 기반으로 만들어진, MTV 패턴을 사용한다. MTV에서는 프로그램을 Model, Template, View으로 나누어 작성한다.

 

 

 

MTV 패턴 동작 방식

 

 

 

  1.  클라언트로부터 요청을 받으면 URLconf 모듈을 이용하여 URL을 분석하고 그 결과를 통해 해당 URL에 매칭되는 view 를 실행한다. 
  2.  view는 자신의 로직을 실행하고, 데이터베이스 처리가 필요하면 model을 호출한다.
  3.  model은 호출받으면 데이터베이스에서 필요한 값을 받아오고 그 결과를 view에 반환받는다.
  4.  view는 자신의 로직 처리가 끝나면 template을 사용하여 클라이언트에 전송할 HTML 파일을 생성한다
  5.  view는 최종 결과로 HTML 파일을 클라이언트에게 보낸다

 

 

 

 

URLconf

 

URL은 보통 다음과 같이 구성된다.

  • 클라이언트가 페이지를 요청하기 위해 서버에 URL을 보내면 서버는 URLconf 모듈을 이용해 URL을 분석한다.
  • URL/View 맵핑을 위해 사용하는 path 함수는 함수 내 변수로 주어진 URL과 요청받은 URL이 일치하면 특정 View를 호출한다.
  • urls.py 파일에 명시되어 있다.

* 참고 *

장고 1.x 버전에서는 url 함수를 사용했지만, 장고 2.x 버전부터는 path 함수를 사용한다.

 

 

 

View - 로직 설계

  • view가 로직을 수행할 때, 데이터베이스 처리가 필요한 경우 model을 호출하여 처리한다.
  • view는 명시된 로직을 수행한 뒤, template을 사용하여 클라이언트에 전송할 HTML 파일을 생성한고 클라이언트에 보낸다.
  • view의 종류는 클래스형 뷰와 함수형 뷰가 있다. 클래스형 뷰는 상속을 통해 사전에 정의된 뷰의 기능을 사용할 수 있다.
  • views.py 파일에 명시되어 있다.

 

 

 

Model - DB 설계

  • model은 DB에 정의된 데이터
  • django에서 model은 클래스로 표현된다.
  • ORM (Object-Relational Mapping) 기법을 이용해, model 클래스를 테이블에, model 클래스의 속성은 테이블의 컬럼에 맵핑한다.
  • models.py 파일에 명시되어 있다.

 

 

Template - 화면 UI 설계

  • 사용자에게 보여지는 UI 부분 (HTML 등)
  • tempalte은 view에서 특정 페이지 요청 시, django 고유의 템플릿 시스템에 의해 사용자에게 보여지는 HTML을 생성한다.
  • 페이지는 템플릿 코드 상태로 존재하는데, 템플릿 시스템은 해당 코드를 해석해 HTML, XML 등의 템플릿 파일로 변환한다.
  • django에서는 이 과정을 렌더링이라 한다.templates 디렉토리  *.html 파일에 명시되어 있다.