백엔드/Django

[Django] Django(장고)란?

안용감한호랑이 2023. 10. 27. 00:42

Django(장고)는 풀스택 프레임워크다.

 

장고를 사용하면 웹 어플리케이션의 개념부터 실행까지 몇 시간 만에 완료할 수 있으며 웹 개발의 번거로움 대부분을 처리하기 때문에 어플리케이션 작성에 집중할 수 있다. 수십가지 추가 기능(사용자 인증, 콘텐츠 관리, 사이트 맵, RSS, ORM...) 등의 작업등을 수행할 수 있다. 또한 보안을 중요하게 생각하며 SQL injection, site scripting 등의 일반적인 보안 실수를 피할 수 있도록 도와준다.

 

[장고의  구성]

출처 : https://developer.mozilla.org/ko/docs/Learn/Server-side/Django/Introduction

  • URLs : 단일 함수를 통해 모든 URL 요청을 처리하는 것이 가능하지만, 분리된 뷰 함수를 작성하는 것이 각각의 리소스를 유지보수하기 훨씬 쉽다. URL 매퍼는 요청 URL을 기준으로 HTTP 요청을 적절한 View로 보내주기 위해 사용된다.
  • View : HTTP 요청을 수신하고 HTTP 응답을 반환하는 요청 처리 함수이다. View는 Model을 통해 요청을 충족시키는데 필요한 데이터에 접근하고 Template에게 응답의 서식 설정을 맡긴다.
  • Model : 응용프로그램의 데이터 구조를 정의하고 데이터베이스의 기록을 관리(CRUD)하고 쿼리하는 방법을 제공하는 Python 객체이다.
  • Template : 파일의 구조나 레이아웃(HTML)을 정의하고 실제 내용을 보여주는 데 사용되는 플레이스홀더를 가진 텍스트 파일이다. View는 HTML 탬플릿을 용하여 동적으로 HMTL 페이지를 만들고 Model에서 가져온 데이터로 채운다. Template으로 모든 파일의 구조를 정의할 수 있다.

 

장고는 위와 같은 MVT(Model View Template) 아키텍처를 가지고 있다. MVT는 MVC 아키텍처와 많이 유사하다.

다만 MVC 아키텍처에서 View가 하는 역할을 장고의 Template이 수행하며 MVC 아키텍처의 Controller가 수행하는 역할은 장고의 View가 일부 수행하고 나머지는 장고 프레임워크가 수행하도록 한다.

MVC MVT
Model Model
View Template
Controller View
Framework

 

[낮은 결합도]

장고의 각 계층 모듈은 서로 낮은 결합도를 가지도록 설계되어 있다. 이는 언제든 다른 모듈로 교체가 가능하다는 뜻이다. 인증 라이브러리를 예시로 든다면 기본 인증 방식으로 cookie&session 인증 모듈을 만들어서 제공하지만 직접 구현하거나 drf-simple-jwt, django-oauth-toolkit 등을 사용하여 인증 모듈을 교체할 수 있으며 이러한 인증 모듈은 다른 모듈에 의존하지 않는다.

 

 

[쉬운 admin]

장고의 가장 강력한 부분 중 하나는 자동 관리 인터페이스 이다. 모델에서 메타데이터를 읽어 신뢰할 수 있는 사용자가 사이트의 콘텐츠를 관리할 수 있는 빠른 모델 중심 인터페이스를 제공한다. 하지만 어드민페이지를 커스텀하며 주의해야 할 사항은 기능을 추가하다 보면 점점 복잡해져 일반적인 복잡한 프로젝트로 변질될 수 있기 때문에 장고의 어드민페이지를 이용할 때 주의하여야한다.