웹 개발 또는 웹 서비스 개발이란 용어를 좀 더 정확하게 표현하면, 웹 애플리케이션 개발이라고 할 수 있습니다.
그렇다면 애플리케이션이란 무엇일까요?
1. Django에서의 Application이란?
웹 사이트를 설계할 때 가장 먼저 해야 할 일은 프로그램이 해야 할 일을 적당한 크기로 나누어서 모듈화하는 것입니다. 이 경우, 웹 사이트의 전체 프로그램 또는 모듈화된 단위 프로그램을 애플리케이션이라고 합니다. 즉, 프로그램을 코딩할 대상을 애플리케이션(Application)이라고 부릅니다.
그러나 장고에서는 용어를 사용할 때, 애플리케이션의 개념을 웹 서버 개발 측면에서 좀 더 구체화하고 있습니다. 웹 사이트에 대한 전체 프로그램을 프로젝트(Project)라 하고, 모듈화된 단위 프로그램을 애플리케이션이라고 하고, 모듈화된 단위 프로그램을 애플리케이션이라 부르고 있습니다. 즉, 애플리케이션 프로그램들이 모여서 프로젝트를 개발하는 개념입니다. 장고는 기본적으로 MTV모델에 따라 애플리케이션을 개발하도록 유도합니다.
2. MTV 패턴
웹 프로그램 개발 시 일반적으로 언급되는 MVC(Model-View-Cotroller)패턴이란 데이터(ModeL), 사용자 인터페이스(View), 데이터를 처리하는 로직(Controller)을 구분해서 한 요소가 다른 요소들에 영향을 주지 않도록 설계하는 방식입니다. 이런 방식으로 개발을 진행하면 UI 디자이너는 데이터 관리나 애플리케이션 로직에 신경 쓰지 않고도 화면 UI를 설계할 수 있고, 로직이나 데이터를 설계하는 개발자도 화면 디자인은 디자이너에게 맡기고 자신의 설계 및 개발 업무에만 집중할 수 있게 됩니다. 파이썬도 이러한 MVC개념을 그대로 받아들였는데, 용어는 다르게 사용하고 있습니다.
장고 프레임워크에서는 View를 Templete, Controller는 View라고 표현하며, MVC를 MTV 패턴이라고 표현합니다. 예를 들면, 모델은 블로그의 내용을 데이터베이스로부터 가지고 오거나 저장, 수정하는 기능을, 템플릿은 출력을 위해 디자인과 테마를 적용해서 보여지는 페이지를 만들어주는 과정을, 뷰는 버튼을 눌렀을 때 어떤 함수를 호툴하며 데이터를 어떻게 가공할 것인지 결정하는 역할을 담당합니다.
Model : 모델은 데이터에 관한 정보를 담습니다. 데이터에 대한 접근, 검증, 작동과 데이터 사이의 관계를 정의하는데, 일반적으로 각각의 모델은 데이터베이스에서 테이블에 해당합니다. 장고에서는 모델을 정의할 때 필드의 종류를 지정해줘야 하는데, 이것이 데이터베이스에게 컬럼 타입을 알려주고 HTML 폼으로 표시 될 때의 입력 타입도 내포하는 역할을 수행합니다. 또한 장고의 폼 자동 생성 API를 이용할 때 데이터 검증에 쓰이기도 합니다.
Template : 사용자가 보게 될 화면의 모습을 정의하는 영역입니다. 데이터가 어떻게 표시되는지를 정의하며, 템플릿은 사용자에게 실제로 보여지는 웹 페이지나 문서를 다룹니다. 흔히 HTML에 기반하여 템플릿을 만들며, HTML에 동적인 요소를 추가하기 위해 파이썬의 일부 기능을 쓰게 도와주는 장고 템플릿 태그가 존재합니다.
View : 애플리케이션의 제어 흐름 및 처리 로직을 정의하는 영역입니다. 어떤 데이터가 표시될 것인지를 정의합니다. View는 HTTP 응답을 반환해야 하며 응답의 종류는 웹 페이지, 리디렉션, 문서 등의 다양한 형태가 가능합니다. 장고에는 자주 사용되는 형태의 뷰를 패턴화하여 추상화 해둔 재사용 가능한 뷰들을 내장해 놓았는데, 이들을 '제네릭 뷰'라고 하며 원하는 제네릭 뷰를 상속한 클래식 뷰를 생성하여 사용할 수 있습니다.
웹 클라이언트의 요청을 받고, 장고에서 MTV 모델에 따라 처리하는 과정을 요약하면, 다음과 같습니다.
클라이언트로부터 요청을 받으면 URLconf 모듈을 이용하여 URL을 분석합니다.
URL분석 결과를 통해 해당 URL에 대한 처리를 담당할 뷰를 결정합니다.
뷰는 자신의 로직을 실행하면서, 만일 데이터베이스 처리가 필요하면 모델을 통해 처리하고 그 결과를 반환받습니다.
뷰는 자신의 로직 처리가 끝나면 템플릿을 사용하여 클라이언트에 전송할 HTML 파일을 생성합니다.
뷰는 최종 결과로 HTML 파일을 클라이언트에게 보내 응답합니다.
- 'Django로 배우는 쉽고 빠른 웹 개발', 김석훈, 한빛미디어
'Programming > Django' 카테고리의 다른 글
[Django] Application 개발 - URLconf 코딩하기 (0) | 2018.03.02 |
---|---|
[Django] Application 개발 - Model (1) (0) | 2018.02.09 |
[Django] Django 프로젝트 생성하기 (0) | 2018.02.06 |
[Django] macOS에서 Django 개발환경 만들기 (1) | 2018.01.29 |
[Django] Django란 무엇인가? (0) | 2018.01.23 |