자주 묻는 질문: 일반¶
왜 이 프로젝트가 존재하나요?¶
장고는 굉장히 실용적인 요구에 의해 만들어 졌습니다.: World Online이라는 뉴스 웹 관리 시스템은 마감 기한에 맞추는 웹 애플리케이션을 만드는 책임이 있었습니다. 빠르게 변화하는 뉴스룸에서 World Online은 복잡한 웹 애플리케이션을 구상해서 공개하기 까지 단 몇시간여 밖에 주어지지 않곤 했습니다.
동시에, World Online의 웹 개발자들은 웹 개발의 최고의 시도를 따르는 것에 관해서는 완벽주의자들 이었습니다.
2003년 가을, World Online의 개발자들(Adrian Holovat and Simon Willison)은 PHP를 버리고 파이썬을 웹을 개발하는데 사용하였습니다. Lawrence.com과 같은 탄탄하고 굉장히 상호작용적인 사이트들을 만들면서, 그들은 웹 애플리케이션을 더 빠르게 만들 수 있는 웹 개발 프래임워크 속성들을 추출해내기 시작하였습니다. 그들은 이 프래임워크를 지속적으로 조작하고 2년간에 걸쳐 향상시켰습니다.
2005년 여름, World Online은 결과물을 오픈소스화 하기로 결정하였습니다. 이것이 바로 장고입니다. 장고는 Apache, Python, and `PostgreSQL`와 같은 다양한 오픈소스들이 없었다면 만들어지지 못했습니다. 저희들은 오픈소스 커뮤니티에 다시 무언가를 돌려준다는 것에 굉장히 설렜습니다.
"Django"의 의미는 무엇이고, 어떻게 발음하나요?¶
장고는 `Django Reinhardt`_에서 이름을 따왔습니다. 1930년도부터 1950년도 까지 활동한 기타리스트입니다. 현재까지 그는 최고의 기타리스트들중 한 명으로 꼽힙니다.
그의 음악을 들어보세요. 당신도 마음에 들어할 것입니다.
장고는 JANG-oh로 발음됩니다. FANG-oh와 비슷합니다. "D"가 묵음입니다.
저희는 발음을 녹음도 하였습니다. audio clip of the pronunciation
장고는 안정적인가요?¶
네, 장고는 꾀 안정적입니다. Disqus, Instagram, Pinterest, 그리고 Mozilla와 같은 회사들이 장고를 수년간 사용해 오고있습니다. 장고로 만든 사이트는 초당 5만번 이상의 트래픽을 견딜 수 있습니다.
장고의 규모를 변화시킬 수 있나요?¶
네 그렇습니다. 개발 시간에 비해 하드웨어는 저렴합니다. 그리고 장고는 하드웨어에 투자한 만큼 효과를 볼 수 있도록 디자인 되었습니다.
장고는 "shared-nothing"이라는 구조를 사용합니다. 이것은 데이터베이스 서버, 캐싱 서버 혹은 웹 애플리케이션 서버의 어느 단에서도 하드웨어를 추가할 수 있다는 의미입니다.
이 프레임워크는 데이터베이스 단과 애플리케이션 단과 같이 정확하게 요소들을 분리합니다. 그리고 간단하지만 강력합니다. cache framework.
이면에는 누가 있나요?¶
장고는 처음에는 미국 캔자스시티에 Lawrence 신문 웹부서 World Online에서 개발되었습니다. 장고는 현재 자원봉사팀에 의해 작동되고 있습니다. team of volunteers.
장고는 MVC패턴으로 보여집니다, 하지만 컨트롤러를 "뷰"라고 부르고, 뷰를 "템플릿"이라고 합니다. 어떻게 일반적으로 사용하는 이름을 사용하지 않았나요?¶
음, 기준이 되는 이름은 논쟁의 여지가 있습니다.
저희가 MVC를 해석하기로는, "뷰"는 사용자에게 보여지는 데이터들을 설명합니다. 데이터가 "어떻게" 데이터가 "보이는"지가 아니라 "어떤" 데이터를 보여주는지로 볼 수 있습니다. 뷰는 "당신이 어떤 데이터를 보는지" 를 설명하지 "당신이 어떻게 보는지"를 설명하지 않습니다. 이것은 사소한 차이입니다.
따라서, 우리의 경우 "뷰"는 특정 URL에 대한 파이썬 콜백 함수입니다. 왜냐하면, 콜백함수는 어떤 데이터를 보여주는지 설명하기 때문이죠.
또한, 내용과 표시를 구분하는 것이 현명합니다. 여기서 템플릿이 등장합니다. 장고에서는 "뷰"는 어떤 데이터를 보여줄지를 구현합니다. 그러나 뷰는 일반적으로 템플릿에 어떻게 데이터가 보여질 지를 위임합니다.
그렇다면 "컨트롤러"는 어디에 맞을까요? 장고의 경우, 아마 프레임워크 자체 일것입니다. 프레임워크가 장고 URL설정에 따라 요청을 적절한 뷰에게 전달합니다.
만약 두문자어를 원한다면, 장고를 "MTV" 프레임워크라고 할수 있습니다. "모델", "템플릿" 그리고 "뷰"로 말이죠. 이렇게 나누는것이 더 적절합니다.
결국에는 장고는 일을 하기 위해 왔습니다. 그리고 어떻게 이름이 정해지더라도, 장고는 우리에게 가장 논리적인 방법으로 일을 해낼 것입니다.
<Framework X>가<feature Y>를 합니다. 왜 장고는 못하나요?¶
저희들도 굉장한 웹 프레임워크들이 있는것을 잘 알고있습니다. 그리고, 아이디어를 빌려오는 것을 싫어하지 않습니다. 하지만 장고는 현재 상태에 행복하지 않았기 때문에 만들어 졌습니다. 따라서 "<Framework X>는 하는데요"라는 말은 장고에 기능을 추가할 만한 충분한 이유가 되지 않습니다.
왜 장고를 하나하나 파이썬 라이브러리를 사용하지 않고 일일이 만들었나요?¶
장고가 처음 작성될 때, Adrian과 Simon은 다양한 파이썬 웹프레임워크를 탐색하였습니다.
저희의 의견으로는, 그 중 어떤것들로 완벽히 만족스럽지 못했습니다.
저희는 까다롭습니다. 저희를 완벽주의자로 부르셔도 괜찮습니다.
오랜시간, 저희는 이미 저희가 구현한 기능을 하는 오픈소스를 많이 보았습니다. 이것은 다른사람들 또한 비슷한 문제를 비슷한 방식으로 푼다는 생각을 다시한번 확인하는 시간이었습니다. 하지만 외부의 코드들을 통합시키는것은 이미 너무 늦었습니다. 저희들은 저희 프레임워크에 이미 작성한 코드를 테스트하고 생산 세팅에 적용하였습니다. 그리고 그 코드들은 저희의 요구를 잘 맞추었습니다.
대개, 저희는 이미 존재하는 프레임워크나 툴들은 기본적이거나 중요한 결점들을 가지고 있었습니다. 그 어떠한 툴들도 저희의 철학을 100퍼센트 담을 수 없었습니다.
저희가 말했듯: 저희는 까다롭습니다.
저희는 저희의 철학을 :doc:`design philosophies page </misc/design-philosophies>`에 담았습니다.
장고는 컨텐츠관리 시스템인가요(CMS)?¶
아닙니다. 장고는 컨텐츠관리 시스템같은것이 아닙니다. 이것은 웹 프레임워크이고 당신이 웹사이트를 만드는데 도움을 주는 프로그래밍 툴입니다.
에를들면 Drupal_같은것과 장고를 비교하는것은 이치에 맞지않습니다. 왜냐하면 장고는 Drupal과 같은것을 "만들어내기" 때문입니다.
물론 장고의 자동화된 관리자 사이트는 환상적이고 시간을 아껴주지만, 관리자 사이트는 장고의 한 모듈일 뿐입니다. 또한, 비록 장고가 "CMS-y" 앱들을 만드는데 특별한 편리한 점들을 가지고있지만, 그렇다고 이것이 "non-CMS-y"앱들을 만드는데 적합하지 않다는 것을 의미하지 않습니다.
어떻게하면 장고 문서를 오프라인에서 볼 수 있게 다운로드 받을 수 있나요?¶
장고 문서는 각 tarball포맷 릴리즈의 "docs" 디렉토리안에 있습니다. 이 문서들은 reST(reStructedText) 형식을 따르고, 각각의 텍스트 파일은 오프라인 장고 사이트의 페이지와 연동됩니다.
문서가 교정 컨트롤러에 저장되어 있기 때문에, 코드가 변하는것을 찾아볼 수 있듯이 문서가 변하는 것도 찾아볼 수 있습니다.
기술적으로 말하자면, 장고 사이트에있는 문서는 reST 문서의 제일 최근 개발 버전으로부터 만들어 졌습니다. 따라서 장고 사이트에있는 문서는 장고 릴리즈에 따른 문서보다 더 많은 정보들을 제공할 것입니다.
어떻게 장고를 인용할 수 있죠?¶
공식적인 인용 양식을 드리기는 어렵습니다. 여기에는 두 가지 이유가 있습니다. 인용 양식은 게시하는것에 따라 굉장히 다양합니다. 그리고 소프트웨어를 인용하는 표준 양식은 아직 논란이 있습니다.
예를들면, `APA style`_은 이런것들을 받아씁니다.
Django (Version 1.5) [Computer Software]. (2013). Retrieved from https://djangoproject.com.
하지만, 게시자가 받아들일 만한 것이 가장 현명한 방법일 것입니다. 따라서 이 가이드라인들의 여러 사본들을 가지고 부족한 부분을 최선을 다해 매꿔보세요.
만약 게시자의 이름을 필요로 한다면, "Django Software Foundation"을 사용하세요.
게시 위치가 필요하시다면, "Lawrence, Kansas"를 사용하세요.
웹 주소가 필요하시다면, "https://djangoproject.com"을 사용하세요.
만약 이름이 필요하다면, 그냥 "Django"로 사용하세요.
게시일이 필요하시다면, 참고하는 버전의 릴리즈 날짜를 사용하세요. (v1.5는 2013)