Django MVT
장고는 MVT 디자인 패턴을 사용한다. 이는 스프링에서의 MVC 패턴과 같지만 이름만 다른 버전이라고도 볼 수 있다. MVC에서의 Model은 똑같이 Model지만, View가 Template, Controller가 View인 것이다.
장고는 클라이언트의 request가 들어오면 먼저 URLConf를 통해 지정된 view를 통해서 request를 처리한다. 처리 과정 중에 데이터가 필요하면 model을 통해 작업을 진행하고 결과를 받아온다. 그리고 그 결과값을 template에 rendering해서 클라이언트에 response 한다.
1. Model
- 데이터를 다루는 영역으로 데이터베이스에 적용될 모델(model)을 설계
- 장고는 ORM기법을 사용하여 어플리케이션에 사용할 데이터베이스를 클래스로 매핑해 코딩할 수 있다.
- 하나의 모델 클래스는 하나의 테이블에 매핑된다.
ORM(Object-Relational Mapping) : 객체와 관계형 데이터베이를 연결해주는 역할로 SQL문 대신 객체를 사용해 데이터를 처리한다.
2. View
- 어플리케이션 상에서 데이터들이 처리되는 함수, 클래스(비즈니스 로직)을 정의
- model과 templates간의 다리역할을 하기도 한다.
3. Template
- 브라우저를 통해 클라이언트가 보게 될 페이지를 구성하는 부분
- 템플릿 파일은 *.html 확장자를 가지며, 적절한 디렉토리에 위치해야지만 장고가 템플릿 파일을 찾아서 매핑을 할 수 있다.
4. URL이 분석하는 순서
-
setting.py 파일의 root_urlconf 항목을 읽어 최상위 URLconf(urls.py) 의 위치를 확인
-
URLconf 를 로딩하여 urlpatterns 변수에 지정되어있는 url 리스트를 검사
-
위에서부터 순서대로 URL 리스트의 내용을 검사하면서 URL 패턴이 매치되면 검사를 종료
-
매치된 URL의 뷰를 호출한다. 여기서는 뷰 함수 또는 클래스 메소드이다. 호출시 HttpRequest 객체와 그리고 매칭할때 추출된 단어들을 뷰에 인자로 넘겨준다.
-
URL 리스트 끝까지 검사했는데도 매칭이 안되면 에러페이지 뷰를 호출한다.
참고
1. https://opentutorials.org/module/4034/24647
2. https://butter-shower.tistory.com/49
3. JIN BLOG