˙Django Basics
현재 가장 많이 사용되는 Python Web Framework*로 오픈소스로, MVC를 기반으로 한 Framework로 MTV(View-Template, Controller - View) 모델이다. View는 데이터를 가져오고 변형하는 Component, Template는 User에게 보여주는 Component로 구성된다. Django는 개발비용을 줄일 수 있으며, 코드 완성도를 높일 수 있다.
▷ ORM(Object - Relation - Mapping : 객체 관계 매핑) 기능
ORM은 데이터베이스 시스템과 모델을 연결시키는 역할을 하며, 보다 효율적으로 관리가 가능하다.
˙Django ORM
▷ ORM : Object - Relation - Mapping (RDBMS를 위한 Framework)
데이터베이스와 객체지향 프로그래밍 언어(Python, node JS 등) 간의 호환되지 않는 데이터를 조작한다.
Class로 Schema를 Mapping 하고, Method로 Query를 작성하면, 객체로 이루어진 테이블을 가져올 수 있다. 별도의 SQL을 사용하지 않고 종속성을 줄일 수 있지만, 복잡하고 속도 또는 생산성이 저하될 수 있다.
˙DRF Basics
▷ DRF : Django Rest Framework
Django에서 REST API를 쉽게 구분할 수 있도록 하기 위한 Framework이다. 실질적으로 Django 내부에서는 PUT, DELETE, PATCH를 제대로 지원하지 않기 때문에 DRF가 필요하다. Django REST API를 사용하면, 보다 효율적으로 소스코드를 관리할 수 있고, REST API는 무상태성, 계층형 구조 등의 특징을 가지고 있으며, 자원에 대한 행위를 METHOD로 표현한다. CRUD 등 경우에 따라 알맞은 METHOD 사용으로 더욱 효율적인 RESTful API 구성할 수 있다. REST API METHDO는 주로 GET, POST, PUT, DELETE (PATCH)를 사용한다.
˙REST API
▷ REST : Representational State Transfer
자원의 이름(표현)으로 구분하여 자원의 상태(정보)를 주고받는 모든 것을 의미한다. REST는 기존 WEB 기술과 HTTP 프로토콜을 그대로 사용하기 때문에 웹의 장점을 최대화할 수 있다. REST가 필요한 이유는 Application의 분리 및 통합, 다양한 Client의 등장 등이 있다.
˙Django Structure
- URLS는 요청 URL 기준으로 적절한 View로 보냄
- View는 HTTP 요청을 수신하고 응답을 반환
- Model은 데이터 구조를 정의하고 기록을 관리
- Template는 파일의 구조나 레이아웃을 정의
˙Django Model
- Web Browser에서 요청(이벤트) 발생
- Django Server로 요청이 들어오고, 알맞은 URL로 호출
- View에서 요청받은 request를 기준으로 DB에 대한 정보 전달
- 전달받은 정보를 통하여 Model에서 DB connection 작업
- DB에서 작업된 내용을 Model, View로 전달
- 실질적으로 User에게 보여줄 데이터를 Template에 전달
- Template에서 UI를 구성하여 User에게 전달
˙Web Server
- Client <- HTTP protocol -> NGINX <- uWSGI protocol -> Django
- NGINX는 Revers Proxy와 Load Balancing 기능과 다양한 Client 접속 제어 가능
- uWSGI는 Web Application과 Web Server가 통신할 수 있도록 하는 소프트웨어(또는 통신 프로토콜)
˙Middleware
- MiddleWare는 양 쪽을 연결하여 데이터를 주고받을 수 있도록 하는 역할
- 즉, 데이터를 주고받는 중간에서 매개 역할을 하는 소프트웨어
- Network를 통해서 연결될 컴퓨터에 있는 Process들에게 서비스를 연결
- 모든 비즈니스 로직을 Server에서 관리하기 때문에 유지보수가 간편
- 또한, 효율 및 확정성(재사용성) 극대화
˙Class Base View
- 코드 재사용 및 확장성 용이
- 다중상속 같은 객체지향 사용 가능
- 내장 Generic Class View
- 직관적이지 않을 수 있음
- 따라서, 읽기가 쉽지 않을 수 있음
˙Function Base View
- 함수로 정의하기에 읽기가 쉬움
- 간결하고 직관적으로 작성 가능
- 확장과 재사용성에 상대적으로 약함
* Framework : Application을 구축할 때 모든 Application의 공통적인 부분을 제공하는 요소(Template 또는 Interface의 집합)
'끄적대기' 카테고리의 다른 글
WAS : Web Application Server (0) | 2022.03.24 |
---|---|
Python 기초 (0) | 2022.03.24 |
Python 정규 표현식(Regular Expression) (0) | 2022.03.24 |
L2 ~ L7 Switch(Switching) (0) | 2022.03.24 |
데이터 품질과 전처리 (0) | 2022.03.24 |