Skip to main content

장고 (웹 프레임워크) 목차 역사 특징 서비스 배포 각주 외부 링크 둘러보기 메뉴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마이크로소프트운영 체제












장고 (웹 프레임워크)




위키백과, 우리 모두의 백과사전.






둘러보기로 가기
검색하러 가기















장고

Django logo.svg

Django 2.0 default page.png

개발자

장고 소프트웨어 재단

안정화 버전
2.0.1 / 2018년 1월 1일 (17달 전)(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를 설치하여 사용할 수 있으나 마이크로소프트 운영 체제 내에서만 작동한다.



각주




  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일 - 웨이백 머신 (영어)



외부 링크


  • 장고 프로젝트 홈페이지


  • 장고 코드모음 사이트 (영어)

  • 장고 한국어 사용자 구글 그룹스

  • 장고 한국어 사용자 페이스북 그룹

  • 장고 개발자가 만드는 10 가지 실수

  • Django Packages










원본 주소 "https://ko.wikipedia.org/w/index.php?title=장고_(웹_프레임워크)&oldid=24191643"













둘러보기 메뉴


























(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"););

Popular posts from this blog

Kamusi Yaliyomo Aina za kamusi | Muundo wa kamusi | Faida za kamusi | Dhima ya picha katika kamusi | Marejeo | Tazama pia | Viungo vya nje | UrambazajiKuhusu kamusiGo-SwahiliWiki-KamusiKamusi ya Kiswahili na Kiingerezakuihariri na kuongeza habari

Swift 4 - func physicsWorld not invoked on collision? The Next CEO of Stack OverflowHow to call Objective-C code from Swift#ifdef replacement in the Swift language@selector() in Swift?#pragma mark in Swift?Swift for loop: for index, element in array?dispatch_after - GCD in Swift?Swift Beta performance: sorting arraysSplit a String into an array in Swift?The use of Swift 3 @objc inference in Swift 4 mode is deprecated?How to optimize UITableViewCell, because my UITableView lags

Access current req object everywhere in Node.js ExpressWhy are global variables considered bad practice? (node.js)Using req & res across functionsHow do I get the path to the current script with Node.js?What is Node.js' Connect, Express and “middleware”?Node.js w/ express error handling in callbackHow to access the GET parameters after “?” in Express?Modify Node.js req object parametersAccess “app” variable inside of ExpressJS/ConnectJS middleware?Node.js Express app - request objectAngular Http Module considered middleware?Session variables in ExpressJSAdd properties to the req object in expressjs with Typescript