본문 바로가기
Python/Django Ⅰ

장고란?(feat.MTV모델)

by Mr.DonyStark 2024. 2. 4.

□ 마감시간이 있는 완벽주의자를 위한 웹프레임워크

바퀴를 다시발명하지마라
  ○ 초기 학습비용은 있지만 매번 새롭게 바퀴를 재발명 안함
  ○ 장고라는 바퀴를 잘굴려 빠르고 정확하게 동작하는 에플리케이션 개발
  ○ 백엔드 개발에 필요한 거의 모든 기능을 장고중심으로 제공
시간은 가장 큰비용으로!! 장고를 누리고 시간을 아껴라
  ○ 고유한 개념 및 데이터는 한곳에, 하나만 조재
  ○ 중복 X, 정규화 OK
  ○ 장고를 통해 중복없는 고유한 개념/데이터로 최대한의 기능을 만듬

신속한 개발 추구
  ○ 느슨한 결합 탄탄한 응집 
  ○ 프레임워크의 각 계층은 필요하기전에는 서로 결합이 없어야함, Best Practice 제안구현은 있지만 강제는 아님

 적은코드 / 반복하지 않음
  ○ 중복줄이고 정규화 지향
  ○ 명시적인 묵시적인것보다 낫다.
  ○ 정당한 이유 없이 마법이 일어나면 안됌 을 추구함

 

MTV(Model-Template-View)

MTV 모델 시퀀스 다이어그램. SPRING MVC 모델과 다름

  ○ Model

     - 데이터베이스에 저장되는 데이터 의미

     - 모델은 클래스로 정의되며 하나의 클래스가 하나의 DB Table 의미

     - DB 작업 CRUD 진행시 SQL(Structured Query Language)를 알고 사용하지만, 장고는 DB CRUD 작업이 가능하도록 ORM을 제공함

      * ORM(Object-Relational Mapping) : 객체(Object)와 관계형 데이터 베이스(Relational Databace)의 데이터를 매핑(하나의 값을 다른 값으로 대응) 해주는 것을 의미함. 객체를 기반으로 움직이기 때문에 객체 간의 관계를 바탕으로 SQL을 자동 생성하여 sql쿼리문 없이도 데이터베이스의 데이터를 다룰 수 있음.

  ○ View

     - Spring MVC 패턴의 컨트롤러에 대응함

     - 사용자 요청에 따라 적절한 로직을 수행하여 결과를 템플릿으로 렌더링하며 응답

     - 데이터를 가공하는 처리를 해야한다 싶으면 뷰에서 함수를 작성하면됨

     - 뷰는 웹 요청을 받고, 전달받은 데이터들을 해당 어플리케이션의 로직으로 가공하여, 그 결과를 템플릿에 보냄

     - 항상 템플릿을 렌더링 하는 것은 아니고 백엔드에서 데이터만 주고 받는 경우

     - URLconF
      → URL 패턴을 정의하여 해당 URL과 뷰를 매핑하는 단계 ▶ URL설계

      → Path 함수를 이용해 URL을 뷰와 손쉽게 매핑시킬 수 있음

      → 클라이언트로부터 요청을 받으면 장고는 가장 먼저 요청에 들어있는 URL을 분석함      

      → 즉, 요청에 들어있는 URL이 urls.py 파일에 정의된 URL패턴과 매칭되는지를 분석 함

      → 장고 1.x 버전에서 정규표현식을 사용하였지만 2.x 버전부터는 path()함수를 사용하기에 이 과정이 쉬워짐

  ○ Template

     - 템플릿은 사용자에게 보여지는 부분

     - 뷰에서 로직을 처리한 후 html 파일을 context와 함께 렌더링하는데 이 때의 html 파일을 템플릿이라 칭함

     -  MVC 패턴의 뷰에 대응되며 유저에게 보여지는 화면을 의미

     - 장고 템플릿 시스템 문법에 맞게 python문법을 활용하여 작성하면 되므로, 다른 작업들과 화면 디자인 작업을 분리하여 확장성을 극대화 시킬 수 있음

     -  장고는 자체적인 Django Template 문법을 지원하며 이 문법 덕분에 html 파일 내에서 context로 받은 데이터를 활용

 

MTV 모델과 MVC 모델 비교 시퀀스 다이어그램

'Python > Django Ⅰ' 카테고리의 다른 글

SQLite 를 활용한 DB 조회  (0) 2024.04.15
서브페이지 URLPATTERNS  (0) 2024.04.15
Models 생성  (0) 2024.04.13
Django 주요개념 : 정리  (0) 2024.04.11
가상환경 설치 & 장고 설치+삭제 & 서버구동 + superuser 생성  (0) 2024.04.08