python/django
[Django] MTV 패턴
바디스
2020. 7. 13. 17:23
MVC 패턴과 MTV 패턴
파이썬에서는 자바에서 자주 사용되는 MVC 패턴을 기반으로 만들어진, MTV 패턴을 사용한다. MTV에서는 프로그램을 Model, Template, View으로 나누어 작성한다.
MTV 패턴 동작 방식
- 클라언트로부터 요청을 받으면 URLconf 모듈을 이용하여 URL을 분석하고 그 결과를 통해 해당 URL에 매칭되는 view 를 실행한다.
- view는 자신의 로직을 실행하고, 데이터베이스 처리가 필요하면 model을 호출한다.
- model은 호출받으면 데이터베이스에서 필요한 값을 받아오고 그 결과를 view에 반환받는다.
- view는 자신의 로직 처리가 끝나면 template을 사용하여 클라이언트에 전송할 HTML 파일을 생성한다
- 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 파일에 명시되어 있다.