MVC는 Model, View ,Controller를 의미합니다. 보통 자바 어플리케이션은 MVC 패턴으로 많이 만들어집니다. spring에도 web MVC project가 있어서 MVC 방식의 프로그래밍을 지원합니다. Controller가 요청의 처리 및 반환을 담당합니다. View가 처리 결과를 jsp/html 페이지와 연결시켜 보여줍니다. Django에서는 MVC 패턴을 기반으로 해서 MVT라는 디자인 패턴을 사용합니다.
용어는 Controller가 없어지고 Template가 생겼습니다. Model,View의 의미도 달라졌습니다.
View : 요청 처리 및 반환. MVC에서 Controller의 역할.
Template : 보여주는 역할. MVC에서 View의 역할.
Model은 데이터란 측면에서 동일합니다.
헷갈리게 용어의 의미가 바뀌었습니다. MVT패턴은 MVC 보다 좀 더 유연하고 편한 어플리케이션 설계를 제공하기 위해 만들어졌습니다.
Django는 ORM(Object Relational Mapping)을 사용해서 DB를 클래스로 매핑해줍니다. DB 대신에 클래스로 데이터를 처리합니다. 즉, DB를 몰라도 됩니다. SQL 문법을 몰라도 됩니다만 django python shell로 데이터 처리하는것을 알아야 합니다. 클래스의 객체에게 쿼리 작업을 요청하면 DB api가 알아서 sql문을 만들어서 처리해줍니다.
Model class는 models.py에 작성합니다.
Django는 웹 요청을 분석하고 Url에 매핑된 View를 호출합니다.
요청을 받고 처리를 해서 template 처리 후에 html형태의 응답을 반환합니다.
(template : .html파일을 의미)
[Django가 url에 매핑된 view가 무엇인지 아는 방법]
클라이언트(웹 브라우저/웹 클라이언트 프로그램(크롤러,파이썬 프로그램 등등))로 부터 요청을 받으면 Django는 가장 먼저 요청에 있는 url을 분석합니다.
Django의 urls.py에 url과 처리 메소드(view)의 매핑이 등록되어 있습니다.
spring에서 servlet-context.xml이 해주는 역할 중 하나와 같습니다.
이러한 url/view 매핑을 URLconf라 합니다.
Django의 최종 응답은 HTML입니다.
template 파일은 프로젝트 설정파일인 settings.py 파일에 정의된 디렉토리들에서 찾습니다. 기존 MVC 패턴에서는 이 보여줄 부분과 url을 적절히 매핑시키는 작업을 직접 작성해야 헀습니다. 하지만 Django의 MVT 패턴에서는 그 매핑을 등록만 해두면 알아서 매핑해줍니다. 이것이 MVT패턴은 MVC 보다 좀 더 유연하고 편한 어플리케이션 설계를 제공하는 이유입니다.