장고는 MTV(Model - Template - View) 패턴을 기반으로 하는 프레임워크이다.
MTV패턴이란 Model(데이터), Template(사용자 인터페이스), View(데이터 처리 로직)을 구분하여 한 요소가 다른 요소들에게 영향을 주지 않도록 설계한 방식이다.
Model
Model은 데이터 모델을 의미하며, 장고의 model 모듈을 이용하여 DB의 테이블과 일치하는 데이터 구조를 정의한다.
보통 하나의 모델은 하나의 테이블에 매핑되고, 클래스 내부의 attribute들은 DB 테이블의 필드를 나타낸다. 장고에서는 Django ORM이라 불리는 자체 ORM을 사용한다. ORM은 Objecte Relational Mapping의 약자로 SQL 언어를 사용하지 않고 DB작업을 가능하게 해 준다. ORM에 대한 자세한 내용은 다른 포스트에서 알아보도록 하자.
Template
Template은 사용자에게 보여지는 html과 같은 페이지이다.
View
View는 http 요청을 수신하고 응답을 반환한다. Model을 통해 필요한 데이터에 접근해 Template에게 응답으로 보여줄 데이터를 제공해주는 역할은 한다. 데이터를 가공하는 로직은 View에서 처리한다.
Model, Template, View는 각각 위와 같은 역할을 수행하고, http request가 Django API에 도달하여 사용자에게 response를 해주는 순서는 다음과 같다.
1. Django 서버로 request가 들어오면 url dispatcher가 url을 분석하여 적합한 view로 요청을 보내준다.
2. view는 사용자의 요청을 받아 어떤 데이터를 가공할 것인지 model에게 전달하고
3. model은 DB와 연결하여 view로 필요한 데이터를 보내준다.
4. model로 부터 받아온 데이터를 가공해야한다면 view에서 처리 후 template에게 전달한다.
5. view로 부터 받은 데이터를 가지고 template에서 페이지를 만들어 웹 브라우저에게 전달한다.
위와 같은 순서로 요청에 대한 응답이 이루어진다.
Django 서버로 request가 들어오면 url을 분석하여 적합한 view로 요청을 보내주는데, url은 view와 template을 이어주는 역할을 한다.
참고 : https://velog.io/@hidaehyunlee/Django-MTV-%ED%8C%A8%ED%84%B4
'🐍Python | Django' 카테고리의 다른 글
[Python] GIL (0) | 2022.05.07 |
---|---|
[Python] Python의 메모리 관리 (0) | 2022.05.03 |
[Python] call by value? call by reference? (0) | 2022.04.28 |
[Python] 메타클래스(MetaClass) (0) | 2022.04.27 |
[Python] main 함수 (0) | 2022.04.26 |