장고 (웹 프레임워크) 목차 역사 특징 서비스 배포 각주 외부 링크 둘러보기 메뉴django-mssqlhttps://www.djangoproject.com/weblog/2018/jan/01/bugfix-releases/“FAQ: General | Django documentation | Django”“Web Service Efficiency at Instagram with Python – Instagram Engineering”“NASA Science :: DjangoSites.org - Powered by Django”“Bitbucket, lessons learned - Jesper Noehr (djangocon.eu) - Reinout van Rees”“Scaling Django to 8 Billion Page Views”“Top 10 sites built with Django Framework”“Django FAQ”“What is the history of the Django web framework? Why has it been described as 'developed in a newsroom'? - Quora”“Django's Roadmap | Weblog | Django”“The Model-View-Controller Design Pattern - Python Django Tutorials”“FAQ: General | Django documentation | Django”“Models | Django documentation | Django”“파이썬 장고(Django), 클래스형 뷰를 사용하는 이유 · Tonic”“Django templates · Django Girls Tutorial”“Django web application security”“Five Reasons to Pick Django as Your Framework”아파치 웹서버와 mod_wsgi를 사용한 장고 사용법Archived장고 프로젝트 홈페이지장고 코드모음 사이트장고 한국어 사용자 구글 그룹스장고 한국어 사용자 페이스북 그룹장고 개발자가 만드는 10 가지 실수Django Packageseheh
라자루스파워 빌더오라클루비 온 레일즈CakePHPRadPHP장고CppCMSWtCFWheels콜드박스 플랫폼콜드스프링퓨즈박스Mach-II모델-글루Vibe.dAppFuseFlexiveGrailsGWTICEfacesItsNat자바서버 페이스JHipsterJspxJWtOpenXava플레이Reasonable Server Faces리모트 애플리케이션 플랫폼RIFESeam스프링Stripes스트럿츠TapestryVaadinVert.xWebWorkWicket웨이브메이커ZK카탈리스트댄서메이슨메이폴모졸리셔스WebGUIBlueBreamCherryPy장고플라스크GrokNevowPyjsPylonsPyramidQuixoteTACTIC토네이도TurboGearsweb2pyWebwareZope 2리프트플레이Scalatra애플리케이션 익스프레스PL/SQLGrails그루비케플러루아OpenACSTcl피닉스ElixirSproutCore자바스크립트루비Yaws얼랑
고속 개발 도구자유 소프트웨어웹 애플리케이션 프레임워크파이썬으로 작성된 자유 소프트웨어BSD 라이선스 소프트웨어
파이썬오픈 소스웹 애플리케이션 프레임워크모델-뷰-컨트롤러장고 소프트웨어 재단데이터베이스중복배제인스타그램NASA모질라집시 재즈장고 라인하르트2005년BSD 사용 허가서관계형 데이터베이스MVC 디자인 패턴아파치 웹 서버mod wsgimod pythonFastCGI마이크로소프트 SQL 서버django-mssql마이크로소프트운영 체제
장고 (웹 프레임워크)
둘러보기로 가기
검색하러 가기
개발자 | 장고 소프트웨어 재단 |
---|---|
안정화 버전 | 2.0.1 / 2018년 1월 1일(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]에서 장고를 사용하는 것으로 알려져있다.
목차
1 역사
2 특징
2.1 구성
2.1.1 모델
2.1.2 뷰
2.1.3 템플릿
2.2 내장 애플리케이션
2.3 외부 패키지
3 서비스 배포
4 각주
5 외부 링크
역사
장고는 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' 패키지에 내장되어있다.
- 확장가능한 사용자 인증 시스템
- 동적 관리자 인터페이스
- RSS 또는 아톰을 위한 피드 생성
- 사이트맵 생성
사이트 간 요청 위조(CSRF), 사이트 간 스크립팅(XSS), SQL 인젝션과 같은 해킹 시도에 대한 보안 대책[16]
외부 패키지
내장된 요소들 중에 원하는 것이 없으면 장고를 위해 개발된 외부 패키지를 이용할 수도 있다. 장고에서 사용할 수 있는 패키지들을 모아놓은 웹사이트 Django Packages 의 경우에는 3600개가 넘는 패키지가 등록되어있는 것을 알 수 있으며, 커뮤니티 멤버들의 꾸준한 기여 덕분에 많은 양질의 패키지들이 개발되고 있다. 이는 파이썬의 "건전지 포함"(Batteries Included) 의 정신에 입각한 것으로 볼 수도 있다.[17]
서비스 배포
장고는 아파치 웹 서버에 mod wsgi 또는 mod python 모듈을 설치하여 서비스할 수 있다. 또한 장고는 FastCGI 모드로 구동할 수 있기 때문에 FastCGI를 지원하는 서버와 연동하여 서비스할 수 있다.[18]
장고는 공식적으로 아래의 데이터베이스를 지원한다.
- PostgreSQL
- MySQL
- SQLite
- Oracle
마이크로소프트 SQL 서버는 django-mssql를 설치하여 사용할 수 있으나 마이크로소프트 운영 체제 내에서만 작동한다.
각주
↑ https://www.djangoproject.com/weblog/2018/jan/01/bugfix-releases/.|제목=
이(가) 없거나 비었음 (도움말)
↑ “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”.
↑ “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월 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일 - 웨이백 머신 (영어)
외부 링크
- 장고 프로젝트 홈페이지
장고 코드모음 사이트 (영어)- 장고 한국어 사용자 구글 그룹스
- 장고 한국어 사용자 페이스북 그룹
- 장고 개발자가 만드는 10 가지 실수
- Django Packages
분류:
- 고속 개발 도구
- 자유 소프트웨어
- 웹 애플리케이션 프레임워크
- 파이썬으로 작성된 자유 소프트웨어
- BSD 라이선스 소프트웨어
(RLQ=window.RLQ||[]).push(function()mw.config.set("wgPageParseReport":"limitreport":"cputime":"0.344","walltime":"0.426","ppvisitednodes":"value":1576,"limit":1000000,"ppgeneratednodes":"value":0,"limit":1500000,"postexpandincludesize":"value":69299,"limit":2097152,"templateargumentsize":"value":2100,"limit":2097152,"expansiondepth":"value":22,"limit":40,"expensivefunctioncount":"value":0,"limit":500,"unstrip-depth":"value":0,"limit":20,"unstrip-size":"value":18241,"limit":5000000,"entityaccesscount":"value":0,"limit":400,"timingprofile":["100.00% 316.992 1 -total"," 58.92% 186.778 1 틀:각주"," 34.38% 108.989 13 틀:웹_인용"," 22.27% 70.605 1 틀:소프트웨어_정보"," 13.55% 42.949 16 틀:정보상자_선택칸"," 8.57% 27.164 2 틀:둘러보기_상자"," 8.16% 25.861 1 틀:시작_날짜와_나이"," 6.70% 21.224 4 틀:뉴스_인용"," 6.69% 21.218 2 틀:정보상자_그림칸"," 6.32% 20.029 1 틀:고속_개발_도구"],"scribunto":"limitreport-timeusage":"value":"0.122","limit":"10.000","limitreport-memusage":"value":3759580,"limit":52428800,"cachereport":"origin":"mw1242","timestamp":"20190712151754","ttl":2592000,"transientcontent":false););"@context":"https://schema.org","@type":"Article","name":"uc7a5uace0 (uc6f9 ud504ub808uc784uc6ccud06c)","url":"https://ko.wikipedia.org/wiki/%EC%9E%A5%EA%B3%A0_(%EC%9B%B9_%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC)","sameAs":"http://www.wikidata.org/entity/Q842014","mainEntity":"http://www.wikidata.org/entity/Q842014","author":"@type":"Organization","name":"uc704ud0a4ubbf8ub514uc5b4 ud504ub85cuc81dud2b8 uae30uc5ecuc790","publisher":"@type":"Organization","name":"Wikimedia Foundation, Inc.","logo":"@type":"ImageObject","url":"https://www.wikimedia.org/static/images/wmf-hor-googpub.png","datePublished":"2006-10-19T13:50:29Z","dateModified":"2019-05-11T06:23:21Z","image":"https://upload.wikimedia.org/wikipedia/commons/8/85/Django_2.0_default_page.png"(RLQ=window.RLQ||[]).push(function()mw.config.set("wgBackendResponseTime":200,"wgHostname":"mw1248"););