장고 (웹 프레임워크)

위키백과, 우리 모두의 백과사전.
둘러보기로 가기 검색하러 가기
장고
Django logo.svg
Django 2.0 default page.png
개발자 장고 소프트웨어 재단
안정화 버전 2.0.1 / 2018년 1월 1일 (7달 전)(2018-01-01)[1]
미리보기 버전 2.0 release candidate 1
종류 웹 애플리케이션 프레임워크
라이선스 BSD 사용 허가서
웹사이트 http://www.djangoproject.com

장고(Django, FAQ 발음으로는 "쟁고"(IPA[ˈdʒæŋgoʊ])[2])는 파이썬으로 작성된 오픈 소스 웹 애플리케이션 프레임워크로, 모델-뷰-컨트롤러(MVC) 패턴을 따르고 있다. 현재는 장고 소프트웨어 재단에 의해 관리되고 있다.

고도의 데이터베이스 기반 웹사이트를 작성하는 데 있어서 수고를 더는 것이 장고의 주된 목표이다. 장고는 콤포넌트의 재사용성(reusability)과 플러그인화 가능성(pluggability), 빠른 개발 등을 강조하고 있다. 또한, "DRY(Don't repeat yourself: 중복배제)" 원리를 따랐다. 설정 파일부터 데이터 모델에까지 파이썬 언어가 구석구석에 쓰였다.

인스타그램[3], NASA[4], 빗버켓[5], Disqus[6] , 모질라[7]에서 장고를 사용하는 것으로 알려져있다.

역사[편집]

장고는 2003년과 2004년에 로렌스 저널-월드(Lawrence Journal-World)라는 신문사의 인턴 웹 프로그래머였던 에이드리안 홀로바티(Adrian Holovaty)와 사이먼 윌리슨(Simon Willison)이 파이썬을 이용해 애플리케이션을 만들기 시작하면서 처음 개발되었다. 당시 로렌스 저널-월드의 웹사이트는 PHP 기반으로 쓰여졌었는데, 홀로바티와 윌리슨은 PHP는 규모가 큰 웹사이트에 적합하지 않다고 생각했고 이를 계기로 파이썬으로 웹 개발을 하기로 결심했다. 하지만 규모가 큰 웹 개발에 적합한 파이썬 도구가 없다는 것을 깨닫고 그들은 장고를 개발하게 되었다. 장고라는 이름은 홀로바티가 좋아하던 집시 재즈 기타리스트인 장고 라인하르트에서 따온 것이다. [8]

사실 장고는 오직 로렌스 웹사이트를 구동하기 위함이었으나, 홀로바티와 윌리슨이 로렌스의 소유자인 더 월드 컴퍼니(The World Company)를 설득하여 오픈 소스로 2005년 7월에 BSD 사용 허가서로 공개하게 되었다.[9]

2008년 6월, 장고 소프트웨어 재단이 공식적으로 장고 프로젝트를 관리하게 된다는 공지가 장고 웹사이트에 올라왔다.

2017년 12월에 장고 2.0 버전이 출시되었다.[10]

특징[편집]

장고는 웹 개발에서 번거로운 요소들을 새로 개발할 필요 없이 내장된 기능만을 이용해 빠른 개발을 할 수 있다는 장점이 있다.

구성[편집]

장고는 파이썬으로 코딩한 모델을 관계형 데이터베이스로 구축해주는 모델(Model), HTTP 요청을 처리하는 웹 템플릿 시스템인 뷰(View), URL의 라우팅을 처리하는 URL 컨트롤러 (Controller) 로 구성된 MVC 디자인 패턴을 따른다.

하지만 전통적인 MVC 디자인 패턴에서 이야기하는 컨트롤러의 기능을 프레임워크를 자체에서 하기 때문에 모델(Model), 템플릿(Template), 뷰(View)로 분류해 MTV 프레임워크라고 보기도 한다. [11][12]

장고의 관리자 페이지 예시
장고의 관리자 페이지 예시

모델[편집]

모델은 데이터에 관한 정보를 담는다. 데이터에 대한 접근, 검증, 작동과 데이터 사이의 관계를 정의하는데, 일반적으로 각각의 모델은 데이터베이스에서 테이블에 해당한다.

장고에서는 모델을 정의할 때 필드의 종류를 지정해줘야 하는데, 이것이 데이터베이스에게 컬럼 타입을 알려주고 HTML 폼으로 표시 될 때의 입력 타입도 내포하는 역할을 한다. 또한 장고의 폼 자동 생성 API 를 이용할 때 데이터 검증에 쓰이기도 한다.[13]

[편집]

어떤 데이터가 표시될 것인지를 정의한다. 뷰는 HTTP 응답(response)를 반환해야 하며 응답의 종류는 웹 페이지, 리디렉션, 문서 등의 다양한 형태가 가능하다.

장고에는 자주 사용되는 형태의 뷰를 패턴화하여 추상화 해둔 재사용 가능한 뷰들을 내장해 놓았는데, 이들을 제네릭 뷰(generic view) 라고 하며 원하는 제네릭 뷰를 상속한 클래스 뷰를 생성하여 사용할 수 있다.[14]

템플릿[편집]

데이터가 어떻게 표시되는 지를 정의한다. 템플릿은 사용자에게 실제로 보여지는 웹 페이지나 문서를 다룬다.

흔히 HTML 에 기반해서 템플릿을 만들며, HTML 에 동적인 요소를 추가하기 위해 파이썬의 일부 기능을 쓰게 도와주는 장고 템플릿 태그가 존재한다.[15]

내장 애플리케이션[편집]

장고에는 아래와 같은 웹 개발에서 자주 쓰이는 애플리케이션이 'contrib' 패키지에 내장되어있다.

외부 패키지[편집]

내장된 요소들 중에 원하는 것이 없으면 장고를 위해 개발된 외부 패키지를 이용할 수도 있다. 장고에서 사용할 수 있는 패키지들을 모아놓은 웹사이트 Django Packages 의 경우에는 3600개가 넘는 패키지가 등록되어있는 것을 알 수 있으며, 커뮤니티 멤버들의 꾸준한 기여 덕분에 많은 양질의 패키지들이 개발되고 있다. 이는 파이썬의 "건전지 포함"(Batteries Included) 의 정신에 입각한 것으로 볼 수도 있다.[17]

서비스 배포[편집]

장고는 아파치 웹 서버mod_wsgi 또는 mod_python 모듈을 설치하여 서비스할 수 있다. 또한 장고는 FastCGI 모드로 구동할 수 있기 때문에 FastCGI를 지원하는 서버와 연동하여 서비스할 수 있다.[18]

장고는 공식적으로 아래의 데이터베이스를 지원한다.

마이크로소프트 SQL 서버django-mssql를 설치하여 사용할 수 있으나 마이크로소프트 운영 체제 내에서만 작동한다.

각주[편집]

  1. https://www.djangoproject.com/weblog/2018/jan/01/bugfix-releases/.  |제목=이(가) 없거나 비었음 (도움말)
  2. “FAQ: General | Django documentation | Django” (영어). 2017년 12월 28일에 확인함. 
  3. “Web Service Efficiency at Instagram with Python – Instagram Engineering”. 《Instagram Engineering》. 2016년 6월 21일. 2018년 1월 4일에 확인함. 
  4. “NASA Science :: DjangoSites.org - Powered by Django”. 2018년 1월 4일에 확인함. 
  5. “Bitbucket, lessons learned - Jesper Noehr (djangocon.eu) - Reinout van Rees”. 2018년 1월 4일에 확인함. 
  6. Robenolt, Matt. “Scaling Django to 8 Billion Page Views” (영어). 2018년 1월 4일에 확인함. 
  7. Bogdanov, Vladimir. “Top 10 sites built with Django Framework”. 
  8. “Django FAQ”. 2017년 12월 27일에 확인함. 
  9. “What is the history of the Django web framework? Why has it been described as 'developed in a newsroom'? - Quora” (영어). 2018년 1월 4일에 확인함. 
  10. “Django's Roadmap | Weblog | Django” (영어). 2018년 1월 4일에 확인함. 
  11. “The Model-View-Controller Design Pattern - Python Django Tutorials”. 《The Django Book》 (영어). 2018년 1월 4일에 확인함. 
  12. “FAQ: General | Django documentation | Django” (영어). 2018년 1월 4일에 확인함. 
  13. “Models | Django documentation | Django” (영어). 2018년 1월 4일에 확인함. 
  14. “파이썬 장고(Django), 클래스형 뷰를 사용하는 이유 · Tonic” (영어). 2018년 1월 4일에 확인함. 
  15. DjangoGirls. “Django templates · Django Girls Tutorial” (영어). 2018년 1월 4일에 확인함. 
  16. “Django web application security” (영어). 2018년 1월 4일에 확인함. 
  17. “Five Reasons to Pick Django as Your Framework”. 《Treehouse Blog》 (영어). 2015년 7월 27일. 2018년 1월 4일에 확인함. 
  18. 아파치 웹서버와 mod_wsgi를 사용한 장고 사용법 Archived 2013년 3월 8일 - 웨이백 머신 (영어)

외부 링크[편집]