나무모에 미러 (일반/밝은 화면)
최근 수정 시각 : 2024-10-05 07:47:28

Django

쟁고에서 넘어옴

파일:나무위키+유도.png  
은(는) 여기로 연결됩니다.
동음이의어에 대한 내용은 장고 문서
번 문단을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
참고하십시오.
웹 프레임워크 기술
{{{#!wiki style="margin:0 -10px"
{{{#!folding [ 펼치기 / 접기 ]
{{{#!wiki style="margin:-5px 0px -10px; word-break:keep-all"
$ 유료 포함 • 취소선 단종 및 중단
<colbgcolor=#f6f6f9,#2f3241> 프론트엔드<colbgcolor=#fcfcfd,#272935> CSS BootstrapTailwind CSSBulmaFoundationSkeletonPico
JSX ReactSolidJSAstroPreactGatsbyRemixInfernoQwik
JS AngularSvelteBackbone.jsjQueryAstrohtmxEmber.jsLit11tyMarkoVanJSAlpine.js
Vue Vue.jsVuePressGridsomeQuasarAstro
Python Reflex
백엔드 Java SpringStrutsGWTGrailsJoobyPlay! FrameworkScala
Kotlin Ktor
JS ExpressNestJSkoaHonofastify
.NET ASP.NET$
PHP LaravelCodeigniterReasonablephalconSymfonyzendCakePHPFuelPHPYiiSlimPHPixe
Python DjangoFlaskFastAPI
Ruby Ruby on RailsSinatra
Go GinechoFiber
풀스택 JSX Next.jsAstroSolidStartRemixQwik City
JS SvelteKitFreshAstroMarko
Vue Nuxt.jsAstro
Java Vaadin$
Python StreamlitReflex
Rust RocketActixLeptosAxum
하이브리드 .NET Blazor
Dart Flutter
Kotlin Kotlin Multiplatform
}}}}}}}}} ||


파일:Django 로고.svg
<colbgcolor=#0c4b33><colcolor=#fff> 최신 버전 5.1.x
언어 Python
링크 공식 홈페이지
1. 개요2. 특징3. 단점4. 역사5. 릴리즈 정책6. 사용 중인 곳7. 관련 문서8. 외부 링크

1. 개요

Django는 2005년부터 시작된 Python의 오픈 소스 웹 프레임워크이자 풀 스택 프레임워크이다.

D가 묵음이기 때문에 '드장고'가 아닌 쟁고[ˈdʒæŋɡoʊ] 정도로 읽으면 된다.

Django 소프트웨어 재단은 소셜 댓글 서비스 디스커스(Disqus)를 만든 곳이기도 하다. Python을 이용해 제작한다.

Django는 Python 기반 웹 프레임워크 중에 가장 널리 퍼져있다. 일반적으로 파이썬을 웹 서비스에 쓴다고 하면 Django 또는 Flask를 쓴다고 생각하면 된다. 둘의 차이는 풀 스택 프레임워크(Django)냐 아니냐 정도.

MVT[1] 패턴에서 Model의 경우 데이터베이스와 연동이 편하게 만들어져 있다.
기본적으로 Model에 해당하는 DBMS는 SQLite를 사용하게 되어있으며, Django Admin 기능을 통해 쉽게 조회/편집이 가능하다.[2]
파일:Django MTV Pattern Diagram.png
Django가 웹브라우저의 요청을 받았을 때 요청에서 응답까지의 흐름을 잘 나타낸 다이어그램

2. 특징

강력한 풀스택 웹 프레임워크답게 기본적으로 제공하는 것들이 많다.

3. 단점

4. 역사

장고는 2003~2004년에 로렌스 저널-월드(Lawrence Journal-World)라는 신문사의 인턴 웹 프로그래머였던 에이드리안 홀로바티(Adrian Holovaty)와 사이먼 윌리슨(Simon Willison)이 파이썬을 이용해 애플리케이션을 만들기 시작하면서 처음 개발되었다.

2003년 로렌스 신문사의 웹사이트는 PHP 기반으로 쓰여졌었는데, 홀로바티와 윌리슨은 당시 PHP 버전은 객체지향을 지원하지 않아서 (PHP 4.3) 규모가 큰 웹사이트에 적합하지 않다고 생각했고 평소에 관심을 가지고 있던 파이썬으로 웹 개발을 하기로 결심했다. 하지만 규모가 큰 웹 개발에 적합한 파이썬 도구가 없다는 것을 깨닫고 새롭게 장고를 개발하게 된 것이다.

사실 처음 장고를 개발할때엔 웹 프레임워크보다는 그냥 CMS를 개발하는 것이라고 생각했다고 한다. 개발자가 개발 당시의 기억들을 풀어놓은 글을 읽고 싶다면 여기(영어)에 사이먼 윌리슨 본인이 직접 쓴 글이 있다. (공동 개발자인 에이드리안도 따봉을 눌렀다!) 장고라는 이름은 홀로바티가 좋아하던 기타리스트 장고 라인하르트에서 따온 것이라고 한다.

또한 장고는 사실 오직 로렌스 웹사이트를 구동하기 위해 개발된 것이었지만, 홀로바티와 윌리슨이 로렌스의 오너 기업인 더 월드 컴퍼니(The World Company)를 설득하여 오픈 소스로 2005년 7월에 BSD 라이선스로 공개하게 되었다. 윌리슨은 더 월드 컴퍼니도 다른 오픈 소스 프로젝트를 많이 사용했기 때문에 쉽게 설득할 수 있었다고 얘기했다.

5. 릴리즈 정책

릴리즈 프로세스
장고 버전은 1.0 부터 A.B.C 정책을 사용하기 시작하였으며 크게 기능 릴리즈, 패치 릴리즈, LTS 릴리즈로 나뉘어진다.
여기서 1 버전과 2 버전 이후로 버전 정책이 서로 다르지만 현재 지원이 완전히 종료된 1[10] 버전은 생략하고, 2 버전부터 사용중인 정책 기준으로 설명한다.

2024년 10월 기준으로 4.2[A], 5.0, 5.1 버전을 공식 사이트에서 다운로드 받을 수 있으며, 각 버전별 지원기간은 아래와 같다.

6. 사용 중인 곳

7. 관련 문서

8. 외부 링크


[1] Model-View-Template[2] Settings.py에서 DATABASE 부분을 수정하고 migrate 하면 DBMS를 PostgreSQL이나 MySQL, MariaDB 등으로 쉽게 변경할 수 있다.[3] 사용자 인증, django.shortcuts, Generic View, User model 등[4] Object–relational mapping이라는 정의에 알맞게 테이블은 모델 클래스가, 각 레코드는 모델 인스턴스가 된다[5] 물론 values나 only를 이용하여 사용할 필드를 제한할 수는 있다[6] 모델간의 상관관계에 따라 SQL 조인을 수행하지 않을 수 있다![7] https://stackoverflow.com/questions/97197/what-is-the-n1-selects-problem-in-orm-object-relational-mapping[8] FROM 절 뒤에 오는 가상 테이블에 대한 쿼리를 ORM 구문으로 직접 정의하거나 관리하기 어렵기 때문에, 가상 테이블에 대한 조인이 필요한 경우 종종 사용하기도 함.[9] 여기까지 오게 되면 특정 RDBMS에 대한 쿼리를 작성할 수 밖에 없게 된다. 만약, 해당 프로젝트가 여러 RDBMS에 대한 호환성을 보장해야 한다면 작성한 쿼리를 표준 SQL로 통일하거나, RDBMS 종류별로 조건분기를 해야 할 것이다.[10] Python 2.x를 지원하는 버전[11] ex: 3.0, 4.1[12] 메인스트림 8개월, 연장 지원 8개월[13] ex: 3.2.7, 4.1.5[14] ex: 2.2, 3.2[15] 메인스트림 8개월, 연장 지원 2년 4개월[16] 장고로 일정 규모 이상의 서비스를 개발한다면 100% 순수 장고만을 이용하기는 어렵고, 누군가가 만들어둔 서드파티 패키지들을 같이 사용하게 되는데 종속 패키지 개발자가 유지보수에 아예 손을 놓지 않은 이상, 기능 릴리즈 단계부터 차근차근 호환성을 확보하여 대부분 LTS 버전과 호환되기 때문[A] LTS[A] [B] 현재 연장 지원 중[B] 현재 연장 지원 중[21] 현재 메인스트림 지원 중