Python/Django

Django.....D는 묵음이야

강승원 2021. 12. 29. 15:55

서론

영화 '장고'의 한 장면, 필자는 누군가 장고를 디장고라고하면 굉장히 '킹'받는다

웹 개발 직군을 종사하는, 혹은 공부하는 사람들 외 사람들에게 장고가 무엇이냐고 물어보면, 

쿠엔틴 타란티노의 영화 '장고' 필자는 이 영화를 굉장히 좋아한다.

이 영화라든지 아니면, 원피스에 나오는 이 녀석이라든지

얘는 d가 없네?

실제로 장고 개발한 사람이 이름을 따온, 기타리스트인 장고 라인하르트라는 인물을 생각할 수도 있고,

혹은 다른 것을 떠올릴 것이다. 구글에만 쳐도 아니, 나무 위키만 봐도 엄청 많으니까..

https://namu.wiki/w/%EC% 9E% A5% EA% B3% A0#s-2.1.2

하지만 웹 개발에 대해 공부를 조금 해봤다면, 장고라는 프레임워크는 꽤나 유명하다. 전 세계적으로 많이 사용되고 있는 인스타그램이나, 핀터레스트도 장고를 이용하고 있고, 

https://www.codenary.co.kr/techstack/detail/django

 

스타트업들의 기술 스택과 기술 블로그를 한눈에 살펴보세요 | 코드너리

네이버, 카카오, 토스, 당근마켓과 같이 요즘 핫한 스타트업은 어떤 기술 스택을 사용하고 있을까요? 코드너리에서 국내 100개가 넘는 스타트업의 기술 정보를 확인하세요.

www.codenary.co.kr

최근 우리나라의 기업들도 장고를 많이 사용하고 있다. 네카라쿠배당토에서 당근마켓토스가 장고를 이용하고 있다.

web application?

인터넷에서 연결된 웹 환경에서 사용자들 간의 연결을 통해 서비스를 제공하고 제공받는 애플리케이션을 의미한다.

기존의 웹 사이트는 정적 사이트를 모아주는 거였다면, 웹 애플리케이션은 유저와 상호작용 할 수 있는, 동적인 요소들을 포함한 마치 스마트폰의 애플리케이션과 같은 기능을 해줌으로써, 관람만이 아닌 수많은 기능을 해줄 수 있는 웹이다. 사실 요즘 웹 서비스는 대부분 웹 애플리케이션이고 통상적으로 사람들이 이를 웹 사이트라고 하니 둘의 차이는 모호하다.

대표적인 예시는 구글 맵스, 쿠팡과 같은 쇼핑몰, 블로그 조차도 웹 애플리케이션의 서비스다.

 

web application framework?

장고를 알기 전 웹 애플리케이션 프레임워크가 뭔지 알 필요가 있다.

웹 애플리케이션 프레임워크(web application framework, WAF)란, 동적인 웹 페이지나, 웹 애플리케이션, 웹 서비스 개발 보조용으로 만들어지는 애플리케이션 프레임워크의 일종이다. 웹 페이지를 개발하는 과정에서 겪는 어려움을 줄이는 것이 주목적으로 통상 데이터베이스 연동, 템플릿 형태의 표준, 세션 관리, 코드 재사용 등의 기능을 포함하고 있다. 출처  

쉽게 말해서 우리가 웹 개발을 할 때, 코드로 열심히 이것저것 헛짓하고, 구조적으로 생각하고 파일 열심히 만들고 이런 고생들을 줄여 줄 수 있도록 도와주는 녀석이다.

웹 어플리케이션 프레임워크 종류

 

 

Django란?

Python으로 만들어진 무료 오픈소스 web application framework이다.

보안을 잘 몰라도 보안이 우수하고 유지보수가 편리한 웹 서비스를 신속하게 개발하는 하도록 도움을 주는 파이썬 서버-사이드 웹 프레임워크이다.

Flask가 웹 개발에 필요한 최소한의 기능만 제공한다면, 장고는 웹 기능에 필요한 수많은 기능을 제공한다. 

무료 오픈소스인 데다가, 활발한 커뮤니티들이 있고, 좋은 참고자료와 좋은 옵션들이 있다.

https://docs.djangoproject.com/ko/4.0/

 

Django 문서 | Django 문서 | Django

Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate

docs.djangoproject.com

Django는 MTV패턴이다.

FrameWork는 개발자가 개발하기 쉽게 하기 위해 기본적인 뼈대나 구조를 제공해주는데,  수많은 웹 프레임워크는 MVC 아키텍처로 비즈니스 로직, 데이터 모델을 분리했는데, 아래 그림과 같다. 

출처:https://www.codeproject.com/Articles/871375/Understanding-ASP-NET-MVC-using-Real-World-Example

  • Model은 상태에 변화가 있을 때 컨트롤러와 뷰에 이를 통보한다. 이와 같은 통보를 통해서 뷰는 최신의 결과를 보여줄 수 있고, 컨트롤러는 모델의 변화에 따른 적용 가능한 명령을 추가·제거·수정할 수 있다. 어떤 MVC 구현에서는 통보 대신 뷰나 컨트롤러가 직접 모델의 상태를 읽어 오기도 한다. => 쉽게 말해서 데이터베이스 관리 및 데이터의 구조 정의 
  • Controller는 모델에 명령을 보냄으로써 모델의 상태를 변경할 수 있다. (예: 워드 프로세서에서 문서를 편집하는 것) 또, 컨트롤러가 관련된 뷰에 명령을 보냄으로써 모델의 표시 방법을 바꿀 수 있다. (문서를 스크롤하는 것) => 데이터 관련 로직이나 비즈니스 로직 관리
  • View는 사용자가 볼 결과물을 생성하기 위해 모델로부터 정보를 얻어 온다. => 사용자가 볼 부분 담당
  • 출처 

https://ko.wikipedia.org/wiki/%EB%AA%A8%EB%8D%B8-%EB%B7%B0-%EC%BB%A8%ED%8A%B8%EB%A1%A4%EB%9F%AC

 

https://ko.wikipedia.org/wiki/%EB%AA%A8%EB%8D%B8-%EB%B7%B0-%EC%BB%A8%ED%8A%B8%EB%A1%A4%EB%9F%AC

 

위 구조를 잘 이해하면 이제 MTV패턴이 이해하기가 쉬워지는데, MTV와 MVC의 다른 점은 구조적으로 크게 다른 게 없고 V => T

C => V

역할이 옮겨진 것이다. 실제로 장고 프로젝트를 시작하고 앱 하나를 만들면

models.py, views.py를 만들어 주는 걸 볼 수 있다. (template은 알아서 폴더 만들어야 됨) 

ORM 지원

ORM이란, (Object Relation Mapping)의 약자로 관계형 데이터베이스를 Object로 매핑해주는 기술이고, 이것을 통해 장고는 객체지향적인 프로그래밍을 통해서 관계형 데이터베이스를 다룰 수 있다. 그래서 SQL문을 몰라도 데이터베이스를 이용한 개발을 할 수 있고 코드가 좀 더 직관적이고 빠른 개발을 할 수 있다. 

Django는 쉽다.

위에 정리한 사실로 바탕으로 봤을 때,

  1. django는 python 기반 => 요즘 대학교에서도 python을 필수로 가르치고 입문하기 좋은 python 언어 기반 database를 다룰 때도 python 객체를 다루기 때문에 SQL을 몰라도 사용할 수 있다!
  2. django는 무료 => 웹 개발하는데 돈 들일 필요가 없다 x
  3. django는 자료가 많고 커뮤니티가 활발 => 몰라도 물어보고 찾아보면 됨!
  4. 개발에 많은 것을 제공 => 웹 개발에 필요한 모듈, 보안적인 요소들을 모두 제공하고 MTV패턴이라는 틀만 잘 이해하면 쉽고 빠르게 개발 가능

결론은!!

Django 배우세요!!