장고 (웹 프레임워크)
원저자 |
| ||
---|---|---|---|
개발자 | 장고 소프트웨어 재단 | ||
발표일 | 2005년 7월 12일 | ||
안정화 버전 |
| ||
저장소 | |||
프로그래밍 언어 | 파이썬 | ||
크기 | 8.9 MB | ||
종류 | 웹 프레임워크 | ||
라이선스 | BSD 사용 허가서 | ||
웹사이트 | www |
장고(Django, FAQ 발음으로는 "쟁고"(IPA: [ˈdʒæŋgoʊ])[2])는 파이썬으로 작성된 오픈 소스 웹 프레임워크로, 모델-템플릿-뷰(MTV) 패턴을 따르고 있다. 현재는 장고 소프트웨어 재단에 의해 관리되고 있다.
고도의 데이터베이스 기반 웹사이트를 작성하는 데 있어서 수고를 더는 것이 장고의 주된 목표이다. 장고는 콤포넌트의 재사용성(reusability)과 플러그인화 가능성(pluggability), 빠른 개발 등을 강조하고 있다. 또한, "DRY(Don't repeat yourself: 중복배제)" 원리를 따랐다. 설정 파일부터 데이터 모델에까지 파이썬 언어가 구석구석에 쓰였다.
인스타그램[3], NASA[4], 빗버킷[5], Disqus[6], 모질라[7]하얀설표 블로그[8]에서 장고를 사용하는 것으로 알려졌다.
역사[편집]
장고는 2003년과 2004년에 로렌스 저널-월드(Lawrence Journal-World)라는 신문사의 인턴 웹 프로그래머였던 에이드리안 홀로바티(Adrian Holovaty)와 사이먼 윌리슨(Simon Willison)이 파이썬을 이용해 애플리케이션을 만들기 시작하면서 처음 개발되었다. 당시 로렌스 저널-월드의 웹사이트는 PHP 기반으로 쓰여졌었는데 홀로바티와 윌리슨은 PHP는 규모가 큰 웹사이트에 적합하지 않다고 생각했고 이를 계기로 파이썬으로 웹 개발을 하기로 결심했다. 하지만 규모가 큰 웹 개발에 적합한 파이썬 도구가 없다는 것을 깨닫고 그들은 장고를 개발하게 되었다. 장고라는 이름은 홀로바티가 좋아하던 집시 재즈 기타리스트인 장고 라인하르트에서 따온 것이다.[9]
사실 장고는 오직 로렌스 웹사이트를 구동하기 위함이었으나 홀로바티와 윌리슨이 로렌스의 소유자인 더 월드 컴퍼니(The World Company)를 설득하여 오픈 소스로 2005년 7월에 BSD 사용 허가서로 공개하게 되었다.[10]
2008년 6월, 장고 소프트웨어 재단이 공식적으로 장고 프로젝트를 관리하게 된다는 공지가 장고 웹사이트에 올라왔다.
2017년 12월에 장고 2.0 버전이 출시되었다.[11]
특징[편집]
장고는 웹 개발에서 번거로운 요소들을 새로 개발할 필요 없이 내장된 기능만을 이용해 빠른 개발을 할 수 있다는 장점이 있다.
구성[편집]
장고는 파이썬으로 코딩한 모델을 관계형 데이터베이스로 구축해주는 모델(Model), HTTP 요청을 처리하는 웹 템플릿 시스템인 뷰(View), URL의 라우팅을 처리하는 URL 컨트롤러 (Controller) 로 구성된 MVC 디자인 패턴을 따른다.
하지만 전통적인 MVC 디자인 패턴에서 이야기하는 컨트롤러의 기능을 프레임워크를 자체에서 하기 때문에 모델(Model), 템플릿(Template), 뷰(View)로 분류해 MTV 프레임워크라고 보기도 한다.[12][13]
모델[편집]
모델은 데이터에 관한 정보를 담는다. 데이터에 대한 접근, 검증, 작동과 데이터 사이의 관계를 정의하는데, 일반적으로 각각의 모델은 데이터베이스에서 테이블에 해당한다.
장고에서는 모델을 정의할 때 필드의 종류를 지정해줘야 하는데, 이것이 데이터베이스에게 컬럼 타입을 알려주고 HTML 폼으로 표시 될 때의 입력 타입도 내포하는 역할을 한다. 또한 장고의 폼 자동 생성 API를 이용할 때 데이터 검증에 쓰이기도 한다.[14]
뷰[편집]
어떤 데이터가 표시될 것인지를 정의한다. 뷰는 HTTP 응답(response)를 반환해야 하며 응답의 종류는 웹 페이지, 리디렉션, 문서 등의 다양한 형태가 가능하다.
장고에는 자주 사용되는 형태의 뷰를 패턴화하여 추상화 해둔 재사용 가능한 뷰들을 내장해 놓았는데, 이들을 제네릭 뷰(generic view) 라고 하며 원하는 제네릭 뷰를 상속한 클래스 뷰를 생성하여 사용할 수 있다.[15]
템플릿[편집]
데이터가 어떻게 표시되는 지를 정의한다. 템플릿은 사용자에게 실제로 보여지는 웹 페이지나 문서를 다룬다.
흔히 HTML 에 기반해서 템플릿을 만들며, HTML 에 동적인 요소를 추가하기 위해 파이썬의 일부 기능을 쓰게 도와주는 장고 템플릿 태그가 존재한다.[16]
내장 애플리케이션[편집]
장고에는 아래와 같은 웹 개발에서 자주 쓰이는 애플리케이션이 'contrib' 패키지에 내장되어 있다.
- 확장가능한 사용자 인증 시스템
- 동적 관리자 인터페이스
- RSS 또는 아톰을 위한 피드 생성
- 사이트맵 생성
- 사이트 간 요청 위조(CSRF), 사이트 간 스크립팅(XSS), SQL 인젝션과 같은 해킹 시도에 대한 보안 대책[17]
외부 패키지[편집]
내장된 요소들 중에 원하는 것이 없으면 장고를 위해 개발된 외부 패키지를 이용할 수도 있다. 장고에서 사용할 수 있는 패키지들을 모아놓은 웹사이트 Django Packages의 경우에는 3600개가 넘는 패키지가 등록되어있는 것을 알 수 있으며, 커뮤니티 멤버들의 꾸준한 기여 덕분에 많은 양질의 패키지들이 개발되고 있다. 이는 파이썬의 "건전지 포함"(Batteries Included)의 정신에 입각한 것으로 볼 수도 있다.[18]
서비스 배포[편집]
장고는 아파치 HTTP 서버에 mod wsgi 또는 mod python 모듈을 설치하여 서비스할 수 있다. 또한 장고는 FastCGI 모드로 구동할 수 있기 때문에 FastCGI를 지원하는 서버와 연동하여 서비스할 수 있다.[19]
장고는 공식적으로 아래의 데이터베이스를 지원한다.
마이크로소프트 SQL 서버는 django-mssql를 설치하여 사용할 수 있으나 마이크로소프트 운영 체제 내에서만 작동한다.
같이 보기[편집]
각주[편집]
- ↑ “Release 5.0.6”. 2024년 5월 7일. 2024년 5월 22일에 확인함.
- ↑ “FAQ: General | Django documentation | Django” (영어). 2017년 12월 28일에 확인함.
- ↑ “Web Service Efficiency at Instagram with Python – Instagram Engineering”. 《Instagram Engineering》. 2016년 6월 21일. 2018년 1월 4일에 확인함.
- ↑ “NASA Science :: DjangoSites.org - Powered by Django”. 2018년 1월 4일에 확인함.
- ↑ “Bitbucket, lessons learned - Jesper Noehr (djangocon.eu) - Reinout van Rees”. 2018년 1월 4일에 확인함.
- ↑ Robenolt, Matt. “Scaling Django to 8 Billion Page Views” (영어). 2018년 1월 4일에 확인함.
- ↑ Bogdanov, Vladimir. “Top 10 sites built with Django Framework”.
- ↑ footer에 사이트가 django로 구성되었다고 게시되어있음.
- ↑ “Django FAQ”. 2017년 12월 27일에 확인함.
- ↑ “What is the history of the Django web framework? Why has it been described as 'developed in a newsroom'? - Quora” (영어). 2018년 1월 4일에 확인함.
- ↑ “Django's Roadmap | Weblog | Django” (영어). 2018년 1월 4일에 확인함.
- ↑ “The Model-View-Controller Design Pattern - Python Django Tutorials”. 《The Django Book》 (미국 영어). 2018년 1월 5일에 원본 문서에서 보존된 문서. 2018년 1월 4일에 확인함.
- ↑ “FAQ: General | Django documentation | Django” (영어). 2018년 1월 4일에 확인함.
- ↑ “Models | Django documentation | Django” (영어). 2018년 1월 4일에 확인함.
- ↑ “파이썬 장고(Django), 클래스형 뷰를 사용하는 이유 · Tonic” (미국 영어). 2018년 1월 4일에 확인함.
- ↑ DjangoGirls. “Django templates · Django Girls Tutorial” (영어). 2018년 1월 4일에 확인함.
- ↑ “Django web application security” (미국 영어). 2018년 1월 4일에 확인함.
- ↑ “Five Reasons to Pick Django as Your Framework”. 《Treehouse Blog》 (미국 영어). 2015년 7월 27일. 2018년 1월 4일에 확인함.
- ↑ 아파치 웹서버와 mod_wsgi를 사용한 장고 사용법 Archived 2013년 3월 8일 - 웨이백 머신 (영어)
외부 링크[편집]
- 장고 - 공식 웹사이트
- 장고 한국어 사용자 구글 그룹스
- 장고 한국어 사용자 페이스북 그룹
- Django Packages