Django
https://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 프레임워크
(추가) 배포시 Django 구조
참고 문헌
웹 요청 Django 작동 Flow
사용자가 Browser 요청이 웹서버(Apache, GWS) 를 통해 전달
=> Django Middleware (WSGI, ASGI)를 통해 Django Framework 셋팅된 url 에 전달
=> url endpoints 로 해당 요청 수신 및 View로 기능 콜백 요청
=> Views에서 요청 확인, Models에 정보 요청
=> Models는 ORM으로 DB 조회 후 Views에 결과 전달
=> Views 받은 정보를 Templates과 조합
=> 최종 유저(클라이언트)에게 화면 전달
'Python > Django' 카테고리의 다른 글
[Django] Django 명령어 설명 (0) | 2022.05.30 |
---|---|
[Django] 무식한 라이브러리 분해 1 (django.db) (0) | 2022.05.30 |
[Django] 프로젝트 구조 분석 (0) | 2022.05.30 |
[Django] Admin 기능 (ORM 컨트롤) (0) | 2022.05.26 |
[Django ] VS Code 에서 Django templates Path 인식 못할 때 (0) | 2022.05.26 |