Python/Django

[Django] MTV 패턴과 동작 Flow

yubi5050 2022. 5. 27. 16:30

Django

https://www.djangoproject.com/

 

The web framework for perfectionists with deadlines | Django

Django Django makes it easier to build better web apps more quickly and with less code. Get started with Django

www.djangoproject.com

 

MTV 패턴

  • 일반 Backend Framework 들은 MVC(Model-View-Controller) 디자인 패턴을 가짐.
  • 장고 MTV(Model-Template-View) 디자인 패턴

  • M (Model)
    - DB의 ORM 모델 (1 Table = 1 Class)
    - 데이터에 대한 접근, 검증, 작동, 데이터 사이의 관계 정의
    - 데이터를 ORM 으로 정의하고 사용하는 계층
    - ORM을 통한 SQL 문 없이 파이썬 코드로 데이터 다루기 가능.
  • T (Template)
    - 사용자에게 보여지는 화면을 뜻함. (UI)
    - HTML 동적 웹 템플릿을 위한 문법 존재 (Django-Template-engine)
  • V (View)
    - 실질적으로 프로그램이 동작하는 부분 (비즈니스 로직 부분)
    - url의 특정 주소(경로)를 통해 전달되는 Request/Response 과정에 필요한 '서비스'들을 일컫음
    - HTTP 응답(Response)을 어떤 방식(.html, redirect)으로 할 것인지를 정의 필요

 

Django Framework 실제 구조

  • Django 프레임워크 미들웨어 (ASGI, WSGI)가 존재한다.
    - ASGI : Asynchronous Server Gateway Interface
    - WSGI : Web Server Gateway Interface
    - ASGI는 WSGI의 상위 호환으로 Web Server - Framework - App 을 연결 해주는 미들웨어로 기존 WSGI의 비동기
      방식에 문제가 많아 ASGI 방식이 고안됨
  • Middleware (ASGI, WSGI) 필요 이유
    - 기존 Apache Web Server 등은 Java 기반 이라 Python 기반 코드 읽을 수 없음.
    - 여러 웹 서버(ex. Apache, GWS 등)와 Python 계열 프레임 워크가 통신 할 수 있게 해주는 역할
  • 최종 Flow
    - 웹 요청 → 웹서버(Apachi, GWS등) → Django Middleware(WSGI 미들웨어) → Django 프레임워크

 

이미지 원본 링크 : https://nitro04.blogspot.com/2020/01/django-python-asgi-wsgi-analysis-of.html

 

(추가) 배포시 Django 구조

이미지 출처 : http://django-easy-tutorial.blogspot.com/2017/03/django-request-lifecycle.html

 

참고 문헌

 


 

웹 요청 Django 작동 Flow

사용자가 Browser 요청이 웹서버(Apache, GWS) 를 통해 전달

=> Django Middleware (WSGI, ASGI)를 통해 Django Framework 셋팅된 url 에 전달

=> url endpoints 로 해당 요청 수신 및 View로 기능 콜백 요청

=> Views에서 요청 확인, Models에 정보 요청

=> Models는 ORM으로 DB 조회 후 Views에 결과 전달

=> Views 받은 정보를 Templates과 조합

=> 최종 유저(클라이언트)에게 화면 전달