따라하며 배우는 Django [1]

Django에 대해서

Minwoo Kang
Berkbach
Published in
5 min readJan 9, 2019

--

Photo by NESA by Makers on Unsplash

인사드리며

안녕하세요, Flask 포스팅을 한지 조금 오래됐는데 이번에 갑작스럽게 Django를 주제로 강좌를 하기로 결심하게되었습니다.

강좌 내용은 Django Document에 있는 내용들을 중심으로 정리하는 형태가 될 것 같습니다.

웹 개발이 처음이거나 미숙하신 분들은 제가 전에 작성한 포스팅을 보고 오시면 이해에 도움이 될 것 같습니다.

Django?

Django(장고)는 python으로 만들어진 무료 오픈소스 웹 어플리케이션 프레임워크(Web Application Framework)으로, 모델-뷰-컨트롤러(MVC) 패턴을 따르고 있습니다.

Django는 대부분의 기능들이 구현되어 있어 개발을 하는데 드는 수고를 덜어줍니다. 하지만 반대로 생각해본다면 Django에서 제공되는 기능들을 customizing해야되는 경우가 많을 수 있습니다. 그렇기 때문에 개인적으로 Django는 처음에 접할 때는 쉽지만 깊게 공부할수록 어렵다고 생각이 됩니다.

이 강좌는 ‘Django를 맛본다(?)’정도로 진행될 것이기 때문에 ‘Django에 대해서 완벽하게 알고 가겠어!’라는 생각보다는이 기능을 만드려면 이런 로직이 필요하고 이 로직을 만들기 위해서는 Django에서 이렇게 해줘야되는구나!로 접근하시면 편하실 것 같습니다.

Django의 특징

🗂 MVC패턴

Django는 MVC(Model-View-Controller)패턴을 기반으로 하고 있습니다. (MVC 패턴을 모르시다면 위에 있는 포스팅을 참고해주세요.)

하지만 Django는 MVC를 MTV(Model-Template-View)라는 이름으로 부르고 있습니다. 처음 접하시는 분들은 View라는 이름의 위치가 바뀌어서 역할의 배분이 어떻게 되는지 헷갈리실 수 있는데 정리한다면

MVC에서는 View가 데이터를 사용자에게 보여주고, Controller가 Model과 View를 제어하며 상호작용 시켜주었다면, MTV에서는 Template이 데이터를 사용자에게 보여주고, View가 Controller의 역할을 해줍니다.

🛠 관리자 웹페이지 제공

저는 Django를 사용하며 이 기능이 매우 마음에 들었습니다.

보통의 웹 어플리케이션에서는 관리자 페이지를 필요로 하지만, 일반적인 기능들과 많이 중복이 되어 구현을 하는데 있어서 번거로움을 많이 느낍니다. 또한 웹에서 List로 출력할 테스트 데이터들도 DB에 만들어줘야하기 때문에 초반에 해줘야하는 작업들이 많습니다. 실제로 Flask를 할 때 직접 DB 관리 프로그램을 이용하여 테스트 데이터를 넣어주는 등 불편한 점들이 많았습니다.하지만 Django는 관리자 페이지를 기본적으로 제공함으로써 CRUD(Create-Read-Update-Delete)작업을 쉽게 수행할 수 있습니다. 이는 개발자가 해야되는 일을 하나 줄여주는 것이기 때문에 매우 큰 장점입니다.

👨‍💻 ORM(Object-Relational-Mapping) 제공

ORM은 사물을 추상화시켜 이해하려는 OOP(Object-Oriented-Programming)적 사고방식과 DataModel을 정형화하여 관리하려는 RDB 사이를 연결할 계층의 역할로 제시된 패러다임입니다.

다시 한번 더 정리하자면, 시스템에서 사용하는 Database 및 DB Connector에 따라 달라질 수 있는 데이터 매핑 구조를 객체지향형태로 통일시켜, SQL 구조의 Database를 OOP 구조의 형태로 매핑시키려는 패러다임입니다. 나중에 나올 Django Model은 ORM을 내장하고 있고, 이는 SQL을 직접 작성하지 않고 CRUD작업을 가능하게 합니다. (하지만 이는 SQL을 몰라도 된다는 것을 뜻하지 않습니다.)

물론 ORM에 대한 장단점이 존재하여 사용을 하는 것은 개발자의 마음이겠지만, 이 강좌에서는 쉬운 개발을 위하여 ORM을 사용하겠습니다. ORM에 대한 개념이 아직 잘 잡히지 않는 분들은 걱정하지마시고 다음 강좌로 넘어가셔서 천천히 이해하셔도 될 것 같습니다.

🧰 풍부한 개발 환경 제공

Django는 자체적으로 테스트용 웹 서버를 포함하고 있어, 개발 과정에서 Apache나 Nginx 등의 웹 서버가 없어도 테스트를 진행할 수 있습니다. 또한 디버깅 모드를 이용하여 에러의 내용을 쉽게 확인하여 해결할 수 있습니다.

첫 번째 강좌는 Django에 대한 설명으로 마치겠습니다.
다음 강좌는 Django 설치 및 Admin 페이지 접속을 하도록 하겠습니다.

--

--