Django(/dʒæŋɡoʊ/ jang-goh/쟁고/장고)는 파이썬으로 만들어진 무료 오픈소스 웹 애플리케이션 프레임워크(web application framework)입니다. 쉽고 빠르게 웹사이트를 개발할 수 있도록 돕는 구성요소로 이루어진 웹 프레임워크입니다.

 

 

웹사이트를 구축할 때, 비슷한 유형의 요소들이 항상 필요합니다. 회원가입, 로그인, 로그아웃과 같이 사용자 인증을 다루는 방법이나 웹사이트의 관리자 패널, 폼, 파일 업로드와 같은 것들 말이지요.

그런데 정말 다행이게도, 오래전에 어떤 웹 개발자들이 새로운 웹 사이트를 개발할 때 서로 비슷한 문제들에 직면한다는 것을 깨달았습니다. 그래서 팀을 조직했고요. 바로 사용할 수 있는 구성요소들을 갖춘 여러 프레임워크를 만들었답니다.

Python 웹프레임워크에는 Django, Flask, FastAPI, Sanic 등이 있습니다.

장고도 그중에 하나인 거죠. 새로운 웹사이트를 개발할 때 뒤따르는 간접비용의 부담을 덜어준답니다.

왜 프레임워크가 필요한가요?

장고라는 것이 실제로 무엇을 위한 것인지 이해하기 위해서는 서버에 대해서 자세히 살펴볼 필요가 있어요. 먼저 서버가 여러분에게 웹 페이지를 제공하길 원하는지 알아야 해요.

편지(request, 요청)가 도착했는지 확인해주는 메일박스(port, 포트)가 있다고 상상해보세요. 이 것은 웹 서버가 해주는 일이에요. 웹 서버는 받은 편지를 읽고 웹 페이지와 함께 답장을 준답니다. 그런데 무언가를 주고 싶을 때는 그 안에 내용이 있어야 하죠. 장고는 그 특정 콘텐츠를 만들 수 있는 역할을 합니다.

누군가가 서버에 웹 사이트를 요청하면 어떤 일이 벌어질까요?

웹 서버에 요청이 오면 장고로 전달됩니다. 장고 urlresolver는 웹 페이지의 주소를 가져와 무엇을 할지 확인합니다.(urlresolver는 웹 사이트 주소인 URL(Uniform Resource Locator)을 통해 이해합니다). 패턴 목록을 가져와 URL과 맞는지 처음부터 하나씩 대조해 식별합니다. 만약 일치하는 패턴이있으면, 장고는 해당 요청을 관련된 함수(view)에 넘겨줍니다

집배원을 생각해보세요. 집배원은 거리를 걸으며 집집이 편지와 대조해서 주소와 번지를 확인합니다. 주소와 번지가 일치하면 그곳에 편지를 배달합니다. urlresolver가 바로 집배원과 같은 역할을 합니다.

모든 일들은 view 함수에서 처리됩니다: 특정 정보를 데이터베이스에서 찾을 수 있습니다. 그런데 만약 사용자가 데이터를 바꿔달라고 수정을 요청한다면 어떻게 될까요? "제 직업에 대한 설명을 바꿔주세요."와 같은 편지를 받았다고 생각해봅시다. view함수는 수정할 수 있는 권한이 있는지 확인하고 나서, 직업에 대한 설명을 수정해 다시 답장을 주겠지요. "완료했습니다!" 라고요. 그러고 나서 view는 답장을 생성하여, 장고는 그 답장을 그 사용자의 웹 브라우저에 보내주는 역할을 합니다.

 

Django의 동작 원리 및 구조

 

Django의 구조 

  • Model (데이터 관리)
  • Template(사용자가 보면 화면, UI)
  • View(중간 관리자)

 

MTV Pattern 

웹 프로그램 개발 시 일반적으로 언급되는 MVC(Model-View-Controller)패턴은 데이터, 사용자 인터페이스, 데이터를 처리하는 로직을 구분해서 한 요소가 다른 요소들에 영향을 주지 않도록 설계하는 방식이다. 이런 방식으로 개발을 진행하면 UI 디자이너와 개발자는 독립적인 영역에서 개발이 가능하게 된다. 

Django 프레임 워크에서는 Model=ModelView=Template, Controller=View,  라고 표현하며 MVC를 MTV라고 한다.

앞서 말한 것 처럼 Model은 데이터 베이스에 저장되는 데이터의 영역, Template은 사용자에게 보여지는 영역, View는 실질적으로 프로그램 로직이 동작하여 적절한 처리 결과를 Template에게 전달하는 역할을 수행 한다. 

 

 

Django의 동작 원리

동작 원리

  • 클라이언트로 부터 요청(Request)를 받으면 URLconf 모듈을 이용하여 URL을 분석한다.
  • URL 분석 결과를 통해 해당 URL에 매칭되는 View를 실행한다.
  • View는 자신의 로직을 실행하고, 데이터베이스 처리가 필요하면 Model을 통해 처리하고 그결과를 반환 받는다.
  • View는 자신의 로직 처리가 끝나면 Template을 사용하여 클라이언트에 전송할 HTML 파일을 생성한다.
  • View는 최종 결과로 HTML 파일을 클라이언트에게 보내 응답(Response)한다.

Django는 MTV Pattern으로 구조화 되어 있습니다.

'장고(Django)' 카테고리의 다른 글

Django framework (2)  (0) 2022.02.15
Django REST Framework로 REST API 만들기  (0) 2022.02.11
Python + Django 사용법  (0) 2022.02.09

+ Recent posts