일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 자바스크립트
- stability-plasticity trade-off
- 생성AI
- javacript
- 훈훈한 Javascript
- application structure
- 장고
- 확률 변수
- Voltage Drop
- 표본 공간
- Power Loss
- few-shot
- zero-shot
- 앱 구조
- GAN 손실함수
- Django
- Autumation Tools
- javascript
- catastrophic forgetting
- fine grained
- 이중구조분해할당
- multi-label
- 인공지능 학회
- for-of
- 설계철학
- 모드 붕괴
- 생산적 적대 신경망
- GAN 이해
- 인프런
- python
- Today
- Total
점점 미쳐가는 개발 일기
Django란? 본문
Django란?
Django(이하 장고)는 python으로 작성된 오픈 소스 웹 프레임워크로, 모델-템플릿-뷰(MTV)패턴을 따르고 있습니다. (위키백과 링크)
장고를 설명하는데 두 가지가 핵심인데, 오픈 소스 웹 프레임워크와 모델-템플릿-뷰 패턴(이하 MTV 패턴)입니다.
오픈 소스 웹 프레임워크
오픈 소스 웹 프레임워크 = 오픈 소스 + 웹 프레임워크
오픈 소스는 오픈 소스 소프트웨어(open source software, OSS)를 뜻하는 용어로 누구나 사용, 수정, 배포가 가능하며 무료인 소프트웨어 입니다.
웹 프레임워크(web framework, WF)는 동적인 웹 페이지나, 웹 애플리케이션, 웹 서비스 개발 보조용으로 만들어지는 애플리케이션 프레임워크의 일종입니다. 웹 페이지를 개발하는 과정에서 겪는 어려움을 줄이는 것이 주 목적으로 통상 데이터베이스 연동, 템플릿 형태의 표준, 세션 관리, 코드 재사용 등의 기능을 포함하고 있습니다.(위키백과 링크)
MTV 패턴
MTV 패턴은 MVC(모델-뷰-컨트롤러) 패턴에 대응되는 장고의 고유한 디자인 패턴입니다.
(* 디자인 패턴 : 프로그램이나 어떤 특정한 것을 개발하는 중에 발생했던 문제점들을 해결 또는 방지하기 위한 표준화된 메뉴얼, 기능 별로 분리하여 상호의존성을 없애 개발 및 유지보수를 최적화)
대부분의 웹 프레임워크는 MVC 패턴을 채택하고 있는데, MVC 패턴은 애플리케이션을 세 가지 역할(모델, 뷰, 컨트롤러)로 구분한 개발 방법론입니다.
각 역할에 대해 알아보면,
1. 모델(Model)
- 애플리케이션이 가지고 있어야 할 데이터(또는 데이터베이스)를 정의합니다.
2. 뷰(View)
- 모델이 가지고있는 정보를 사용자에게 보여주는 부분(user interface, UI)을 정의합니다.
3. 컨트롤러(Controller)
- 사용자가 뷰를 통해 이벤트를 발생시키면 처리하는 역할을 가집니다.
- 모델과 뷰는 독립적이지만, 이 둘을 연결해주는 역할을 하는 것이 컨트롤러입니다.
MVC 패턴을 통해 웹 서비스 처리 과정을 요약하자면,
사용자가 뷰를 통해 컨트롤러를 조작
→ 컨트롤러는 모델을 통해서 데이터 처리
→ 처리된 데이터를 컨트롤러가 다시 뷰에게 전달
→ 뷰를 통해 사용자에게 시각적으로 정보를 전달합니다.
장고는 MVC 패턴과 유사한 MTV 패턴을 채택하는데, MVC 패턴과 다르게 어플리케이션의 세 역할을 모델, 템플릿, 뷰로 구분한 개발 방법입니다.
1. 모델(Model)
- 애플리케이션이 가지고 있어야 할 데이터(또는 데이터베이스)를 정의합니다.
- MVC 패턴의 모델과 대응됩니다.
2. 템플릿(Template)
- 모델이 가지고있는 정보를 사용자에게 보여주는 부분(user interface, UI)을 정의합니다.
- MVC 패턴의 뷰와 대응됩니다.
3. 뷰(View)
- 사용자가 템플릿을 통해 이벤트를 발생시키면 처리하는 역할을 가집니다.
- 모델과 템플릿은 독립적이지만, 이 둘을 연결해주는 역할을 하는 것이 뷰입니다.
- MVC 패턴의 컨트롤러와 대응됩니다.
여기까진 다른 점이 존재하지 않는 것 같지만, 장고에는 URL 설계 부분이 존재합니다.
4. ULRconf
- 요청 URL을 기준으로 HTTP 요청을 적절한 뷰로 보내주기 위해 사용합니다.
- 즉, URL과 뷰를 매핑
URLconf가 존재하면 리소스를 유지보수하는데 용이하다는 장점이 존재합니다.
MTV 패턴을 통해 웹 서비스 처리 과정을 요약하자면,
사용자로부터 요청을 받으면 URLconf를 이용하여 URL을 분석
→ URL 분석 결과를 통해 해당 URL에 대한 처리를 담당할 뷰를 결정
→ 뷰는 자신의 로직을 실행하면서 만일 데이터 베이스 처리가 필요하면 모델을 통해 처리 후 결과를 반환
→ 뷰는 자신의 로직 처리가 끝나면 템플릿을 사용하여 사용자에게 전송할 HTML 파일을 생성
→ 뷰는 최종 결과로 HTML 파일을 사용자에게 보내 응답
장고의 장점 [Ref. 6]
- Complete(완결성 있는)
: Batteries included 철학을 기반으로, 개발자들이 개발하고 싶은 거의 모든것을 개발하는데 도움을 줍니다. (Batteries included : 제공하는 것만으로도 모든 작업을 수행하는데 문제 없다는 의미)
- Versatile(다용도의)
: 다양한 종류의 웹 사이트를 빌드하는데 사용할 수 있고 사용되어 왔습니다. 또한 대부분의 형식(HTML, RSS 피드, JSON, XML 등)으로 컨텐츠를 전송할 수 있습니다.
- Secure(안전한)
: 개발자들이 웹사이트를 개발할 때 실수하기 쉽지만 고려해야하는 보안 문제에 대해 취약점을 보완할 방법 기본적으로 제공합니다.
- Scalable(확장성 있는)
: 컴포넌트 기반의 “shared-nothing” 아키텍쳐(각각의 아키텍쳐가 독립적이어서 필요하다면 교체 및 변경할 수 있는)를 사용합니다.
- Maintainable(유지보수가 쉬운)
: 유지보수가 쉽고 재사용하기 좋게끔 하는 디자인 원칙들과 패턴들을 이용하여 작성됩니다
- Portable(포터블한)
: 파이썬으로 작성되어 있으며, 파이썬은 많은 플랫폼에서 작동합니다. 특정한 서버 플랫폼에 얽매이지 않는다는 것을 의미하며, 리눅스, 윈도우 그리고 맥 OS 등 다양한 운영체제에서 작동할 수 있습니다.
# References
4. MVC 패턴 - 준꼬
'Back-end > Django' 카테고리의 다른 글
Django 프로젝트 및 앱 구조 (0) | 2023.01.26 |
---|