초보자를 위한 장고 뿌시기 2 MTV 패턴
20 Jan 2020 | django pythongoormedu의 초보자를 위한 장고 뿌시기를 보고 공부한 것을 정리합니다.
MTV 패턴
- 일반적으로 MVC 패턴이라고 부르는 것과 의미 자체는 같음
- view -> template
- controller -> view
- 모델(Model) : 데이터베이스에 저장되는 데이터를 가지고 오거나 저장, 수정
- 템플릿(Template) : 사용자에게 보여지는 부분
- 뷰(View) : 실질적으로 프로그램 로직이 동작하여 데이터를 가져오고 적절하게 가공하여 그 결과를 템플릿에 전달하는 역할 / 모델과 템플릿 사이에서 중계자 역할
- 클라이언트 : 행위의 주체
- 뷰 : 요청에 대한 응답을 하는 곳 / 서버같은 역할
- 뷰는 어떤 주방같은 곳
- 클라이언트는 뷰에게 요청(request)
- 뷰는 클라이언트에게 응답(response)
- url 접속 -> 11번가 서버로 request -> 11번가 홈페이지 보임 -> 11번가 서버의 response(html로 이루어진 화면)
- 즉, 요청을 보내고 응답을 받는 구조
- 템플릿 : 뷰에서 response로 쓰이는 html 등등
- view는 render를 통해 template을 response로 클라이언트에게 보여줌
- 모델 <- 정말 중요
- 모델은 추상적 개념
- 파이썬에서의 클래스
- 붕어빵을 찍어내는 것과 같은 modeling을 통해 만들어짐
- database를 만들기 위한 설계
- Database : 실제로 데이터를 저장하는 곳
- 11번가의 여러 상품들 - 상품이름, 가격, 이미지 등
- product에는 이름, 가격, 이미지가 있다는 설계
- 그 설계를 통해 만들어진 것 -> 모델
- 객체 : 상품 모델 (설계) 를 통해 찍어낸 상품 하나하나
- 데이터베이스에서는 SQL 사용
- 파이썬과 SQL은 다른 언어이므로 통역사가 필요 -> ORM
- ORM : Object Relational Mapping
- 모델링 과정을 통해 모델을 만들고 이를 통해 찍어낸 각 객체들을 데이터베이스에 실질적으로 저장
- 이들을 서버의 데이터베이스에서 불러와서 화면에 띄워준다!
- 웹서비스를 하나 만든다고 가정
- 먼저 모델링부터
- User라는 모델을 만든다
- -> Username, Email, Password, Bdate의 컬럼(필드, 애트리뷰트)
- 하나의 객체를 생성한다
- -> 성원, tjddnjss@domain.com, 1111, 910101
- 모델링한 유저 모델을 실제 데이터베이스에도 저장해야 함
- migration이라는 주문서를 만들고 이 주문서를 migrate라는 과정을 통해 데이터베이스에 User Table 생성
- column = 속성
- 모델은 붕어빵 틀처럼 객체들을 찍어내기 위해 만드는 것
- Post (Title, Content)
- 쇼핑몰을 만든다고 가정
- User(Username, Email, Password, Bdate, CreatedAt, UpdatedAt)
- Product(Name, Price, CreatedAt, UpdatedAt)
- 이렇게 설계한 것들이 모델이고 모델을 통해 객체를 찍어낸다
- Review(Content, CreatedAt, UpdatedAt)
- 이 정보들을 실질적으로 데이터베이스에 저장하고
-
그 데이터베이스에서 정보를 불러와서 사용자 화면에 띄워줌
-
CreatedAt, UpdatedAt : 객체가 언제 생성되고 언제 수정됐는지에 대한 정보는 중요함 -> 꼭 가지고 있어야 함
-
모델링의 각각의 컬럼이 어떤 데이터 타입을 가지고 있는지 중요
-
Username : String
-
Email : String
-
Bdate : date
-
Relation : 상호간의 관계
-
리뷰 <- 어떤 사용자가 어떤 상품에 대해 썼는지 <- 외래키를 통해 가져옴
-
관계까지 설정하는 것이 모델링
-
장고에서 모델링을 할 수 있다!
처리과정
-
클라이언트의 요청(request)
-
url conf 모듈을 이용하여 url을 분석
-
해당 url에 대한 처리를 담당하는 view 결정
-
view는 로직을 실행하면서 데이터베이스 처리가 필요한 것은 모델을 통해 처리하고 결과를 반환하여 템플릿을 활용해 클라이언트에 전송할 html 파일 생성
-
view는 최종결과로서 html 파일을 클라이언트에게 응답(response)
-
11번가 링크 누름 -> 11번가 서버로 request를 보냄 -> 모델을 거쳐 데이터베이스로부터 ORM을 통해 상품 오브젝트들을 가져와서 템플릿에 데이터들을 뿌려준 뒤 응답으로 이 화면을 사용자에게 띄워준다.
Comments