Django의 MVT 패턴

이상해씨·2023년 6월 20일
0

장고 (Django)

목록 보기
2/38
post-custom-banner

디자인 패턴(Design Pattern)

설계 문제에 대한 해답을 문서화하기 위해 고안된 형식방법(Gamma et al., 1994, Design Patterns (the "Gang of Four" book))

대표적인 디자인 패턴, MVc

  • model(모델) - view(뷰) - controller(컨트롤러)
  • 사용자 인터페이스와 로직 분리로 서로 독립적인 애플리케이션을 만들 수 있음
  • 유지보수, 확장성 등에 용이
  1. Model : 애플리케이션의 정보(데이터)
  2. View : 사용자가 보는 레이아웃, 화면 (인터페이스)
  3. Controller : 모델에 명령을 보냄으로써 모델의 상태 변경, 컨트롤러가 뷰에 명령을 보냄. (데이터와 로직 사이의 상호작용)

    (RegisFrey - The model, view, and controller (MVC) pattern relative to the user.)

Django의 디자인 패턴, MVT!

  • MVC 패턴과 유사
  1. Model : 데이터베이스의 데이터, 표시하고자 하는 데이터
  2. Template (= MVc의 view) : 사용자의 요청에 의해 처리되어 나타난 화면, 데이터 표시하는 형식, 웹 페이지 레이아웃 HTML 파일
  3. View (= MVc의 controller) : 사용자의 요청을 처리하는 역할


(출처 : https://velog.io/@inyong_pang/Django-MVTModel-View-Template-%ED%8C%A8%ED%84%B4 )

  • 다른 프레임워크에서는 MVC 디자인 패턴을 사용한다.
    - M (model) : 장고에서 model에 해당하는 영역
    • V (view) : 사용자가 보는 화면. 장고에서 Templates에 해당하는 영역.
    • C(controller) : 장고에서 view에 해당하는 영역

1. Model

DB와 연곃된 python class

  • 데이터베이스에서 데이터를 제공
  • ORM(Odject Relational Mapping, 객체- 관계 매핑) 으로 데이터가 전달됨.
    💡 ORM(Odject Relational Mapping)

: 객체- 관계형 데이터베이스(RDMS)를 연결해주는 것. 모델 클래스와 DB에 생성된 테이블을 자동으로 연결해 주는 기술로, DB를 직접 조작하지 않아도 모델 클래스의 Python 문법을 통해 DB를 조작할 수 있는 기술.

객체 지향 프로그래밍이 사용하는 클래스, 관계형 데이터베이스에서 사용하는 테이블 모델간의 불일치를 자동으로 SQL을 이용하여 해결

(https://gmlwjd9405.github.io/2019/02/01/orm.html)

  • models.py 파일
  • 머신러닝 모델이 아닌, 데이터 모델 할 때 그 모델

2. View

Django에서 처리된 데이터를 templates에 전달

  • http 요청을 받아 관련 모델을 불러오고, template에 보낼 데이터를 찾아 결과를 반환하는 함수 또는 메소드
  • veiws.py 파일

3. template

사용자에게 보여줄(response) client view

  • 사용자 요청을 처리한 결과를 표현하는 방법 (어떻게 사용자에게 처리된 결과를 보여줄 것인가)
  • 프론트엔드의 영역 같은 곳(html, css, js, react)
  • HTML + Django 태그를 사용
  • templates.py 파일

4. URLs

  • Django는 웹사이트의 여러 페이지를 탐색할 수 있게 함
  • 사용자 URL 요청을 하면 Django에서 보낼 URL view를 결정하여 반환
  • urls.py 파일

Django 웹 어플리케이션 실행 절차

  1. URL을 사용자로 부터 받으면 urls.py에서 파일을 확인하여, URL과 일치하는 view를 호출
  2. views.py에서 관련 models을 확인
  3. models.py에서 models가 import 됨
  4. templates.py에서 데이터를 해당 template에 보냄
  5. template는 HTML, Django tags, 데이터로 구성된 콘텐츠를 browser에 반환하여 서비스 제공


(https://www.inflearn.com/course/lecture?courseSlug=web_fullstack&unitId=74170)


## Django 웹 어플리케이션 구축절차 1. url.py : url 상세명서 2. views.py : 함수명세, 클래스 명세 3. midels.py: 데이터베이스 명세 4. templates.py

참고

profile
공부에는 끝이 없다
post-custom-banner

0개의 댓글