Django 웹 프레임워크
로렌스 저널-월드 신문을 만들던 웹 개발팀의 내부 프로젝트로 시작되었다. 2005년 오픈소스 프로젝트로 공개되고 구글의 앱 엔진에서 장고를 사용하면서 인기가 시작
장고의 특징
- MVC 패턴 기반의 MVT
장고에서 Model은 데이터베이스에 액세스하는 컴포넌트이고, View는 데이터를 가져오고 변형하는 컴포넌트이며 Template은 데이터를 사용자에게 보여주는 컴포넌트 이다.
- 객체 관계 매핑
장고의 객체 관계 매핑은 데이터베이스 시스템과 모델이라는 파이썬 클래스를 연결시키는 다리와 같은 역할을 한다. ORM 기능을 통해 다양한 데이터베이스 시스템을 지원하고 있으며, SQL 문장을 사용하지 않고도 테이블을 조작할 수 있다. 이미 구축한 데이터베이스 시스템을 다른 데이터베이스로 변경하는 경우에도 간단하다.
- 자동으로 구성되는 관리자 화면
장고는 웹 서버의 콘텐츠, 즉 데이터베이스에 대한 관리 기능을 위하여 프로젝트를 시작하는 시점에 기본 기능으로 관리자 화면을 제공한다. 이러한 관리자 화면을 통해서 애플리케이션에서 사용하는 테이블과 데이터들을 쉽게 생성하거나 변경할 수 있으며, 개발자가 별도로 관리 기능을 개발할 필요가 없어졌다.
- 우아한 URL
URL을 직관적이고 쉽게 표현할 수 있다. 정규표현식을 사용하여 복잡한 URL도 표현할 수 있으며, 각 URL 형태를 파이썬 함수에 1:1로 연결하도록 되어있어 개발이 편리하고 이해가 쉽다.
- 자체 템플릿 시스템
장고는 내부적으로 확장이 가능하고 디자인이 쉬운 강력한 템플릿 시스템을 가지고 있다. 이를 통해 화면 디자인과 로직에 대한 코딩을 분리하여 독립적으로 개발 진행이 가능하다. 장고의 템플릿 시스템은 HTML과 같은 텍스트형 언어를 쉽게 다룰 수 있도록 개발되었다.
- 캐시 시스템
동적인 페이지를 만들기 위해서 데이터베이스 쿼리를 수행하고 템플릿을 해석하며, 관련 로직을 실행해서 페이지를 생성하는 일은 서버에 부하가 많다. 그래서 캐시 시스템을 사용하여 자주 이용되는 내용을 저장해 두었다가 재사용하면 성능을 높일 수 있다.
장고의 캐시 시스템은 캐시용 페이지를 메모리, 데이터베이스 내부, 파일 시스템 중 아무 곳에나 저장할 수 있다. 또한 캐시 단위를 페이지에서부터 사이트 전체 또는 특정 뷰의 결과, 템플릿의 일부 영역만을 지정하여 저장해 둘 수 있다.
- 다국어 지원
장고는 동일한 소스코드를 다른 나라에서도 사용할 수 있도록 텍스트의 번역, 날짜/시간/숫자의 포맷, 타임존의 지정 등과 같은 다국어 환경을 제공한다.
- 풍부한 개발 환경
장고는 개발에 도움이 될 수 있는 여러 가지 기능을 제공한다. 대표적으로 테스트용 웹 서버를 포함하고 있다.
- 소스 변경사항 자동 반영
개발 과정에서 장고는 *.py 파일의 변경 여부를 감시하고 있다가 변경이 되면 실행 파일에 변경 내역을 바로 반영해준다. 그래서 테스트용 서버를 실행 중인 상태에서 소스 파일을 수정하면 자동으로 새로운 파일이 반영된다.