본문 바로가기

제대로알자, SW/웹 프로그래밍

Django를 활용한 Python 웹 프로그래밍 (1) - 개념 정리


오늘부터 django를 활용한 Python 웹 프로그래밍 공부를 시작해 보려고 한다.

(정확한 발음은 쟁고[ˈdʒæŋgoː]이지만, 우리는 보통 '장고'라고 부른다.)

django Framework를 활용하여 Python Web application을 개발해 보면서 관련 기술을 습득하는 것이 목표이다.

또한, 그 과정에서 필요한 모든 과정을 정리해 나감으로써 스스로 개념을 보다 확실히 정립해 나가고,

나와 비슷한 상황의 누군가에게 조금은 유익한 정보를 제공하고자 포스팅을 시작하게 되었다.

오늘은 그 첫번째 시간으로 django에 대해 간단히 알아보겠다.


1. django 란 무엇인가?

django makes it easier to build better Web apps more quickly and with less code.

django는 유지보수가 필요한 website를 쉽고 빠르게 개발할 수 있도록 도와주는 Python Web framework 이다. 

웹 개발과 관련된 귀찮은 반복 작업을 쉽게 처리할 수 있도록 모듈화 하여 제공함으로써,

개발자는 (이미 있는 것을 만드느라) 쓸데없이 시간을 낭비할 필요가 없이(reinvent the wheel)

자신의 application 고유 기능에 대한 개발에만 신경 쓸 수 있다. 

django 는 open source라 무료로 이용 가능하고 사용자가 많아 다양한 커뮤니티와 자료를 활용할 수 있다.



2. django 특징 - Overview page의 설명임


 1) Complete (완전한)

  - django는 "Batteries included" 철학을 따르며 개발자가 즉시 사용하기 원하는 거의 모든 기능을 제공한다.

 2) Versatile (다재다능한)

  - django는 거의 모든 종류의 웹 사이트를 구축하는 데 사용될 수 있다.

  - 어떠한 client측 framework에도 동작할 수 있으며 거의 모든 형식의 content를 전송할 수 있다.

    ( HTML, RSS feeds, JSON, XML, etc )

  - 인기 있는 다양한 database, templating engines 등 개발자가 필요한 기능을 선택적으로 사용할 수 있다.

 3) Secure (안전한)

  - website를 보호하기 위한 체계화된 framework를 제공함으로써 일반적인 보안 실수를 피하도록 도와준다.

 4) Scalable (확장 가능한)

  - django는 component 기반 "shared-nothing" 아키텍처를 사용한다.

  - 각 모듈은 다른 모듈에 독립적이기 때문에 필요할 경우 자유롭게 교체가 가능하다.

 5) Maintainable (유지보수가 쉬운)

  - django code는 재사용 및 유지보수가 쉽도록 디자인 패턴을 사용하여 작성되었다.

  - django는 관련 기능을 재사용 가능한 "application"으로 분류하고, 하위레벨에서는 관련된 모듈을

    MVC (Model, View, Control) 패턴에 따라 그룹화 한다.

 6) Portable (이식 가능한)

  - django는 다양한 platform에서 구동 가능한 Python 언어로 작성되었다.

  - 따라서, Linux, Windows, Mac OS 등 다양한 OS 환경에서 사용할 수 있다.



3. django 구조 맛보기


  - django는 MVC 패턴으로 개발되었다.

  - Web 요청에 대한 처리 과정에서 필요한 역할을 MVC 패턴에 따라 분리된 각 모듈에서 처리한다.

   1) URLS ( urls.py )

      - 요청된 URL을 기준으로 적절한 view로 HTTP 요청을 재전송하는 URL mapper.

      - 또한, URL에 표시되는 특정 문자열이나 숫자의 패턴을 매칭하여 이 정보를 view에 전달할 수 있다.


    2) View ( view.py )

      - HTTP 요청을 수신하고 HTTP 응답을 반환하는 request handler 모듈이다.

      - View는 요청에 해당하는 data를 Model 부를 통해 액세스한다.

      - 실제 응답의 시각화는 Template으로 위임한다.

      - 즉, django의 View는 MVC 패턴의 Controller에 해당한다.


    3) Model ( models.py )

      - data를 정의하고, Add/Modify/Delete 등의 일반적인 관리 및 조회할 수 있도록 제공하는 모듈이다.


    4) Template

      - HTML page 같이 파일의 구조 또는 레이아웃을 정의하는 텍스트 파일이다.

      - 즉, django의 Template은 MVC 패턴의 View에 해당한다.


*Note : Django 는 이 구조를 Model View Template (MVT) 아키텍처라고 언급했다.

이는 보다 친숙한 Model View Controller (MVC) 아키텍처와 매우 비슷한 개념이다.



[참고한 사이트]

1. django 대표 사이트

2. MDN web docs : Django introduction