효율적: 이미 구현되어 있는 코드로 시간과 비용을 절약해 생산성 높음 (ex. 로그인 기능, 관리자 페이지 -> 뒤에서 자세히)
품질 향상: 수많은 개발자들이 검증한 코드로 버그를 최소화 할 수 있음 (뒤에 나오지만, '오픈소스'라는 장고의 특징과 엮어서 이해하면 더 편할 것 같아요. 물론 오픈소스라는게 장고만의 특징은 아니지만!)
유지보수 용이: 체계적인 코드관리로 유지보수 용이. 개발자 기준보다 프레임워크 기준으로 개발하기에, 수월한 협업 가능
사실 직접 개발하거나 실습하기 전까진 아무리 장점을 읽어봐도 별로 와닿지 않을것같긴해요 하하
무튼.. 제 개인적인 생각으론, 위에 언급한 장점이 명확히 '장고'만의 장점일까? 라고 묻는다면.. 섣불리 그렇다! 라고 말하긴 어려울거같기도하네요. 다른 프레임워크도 저런 장점이 있는 경우도 많으니까요!! 그래도 장고는 좋다고합니다 (프젝할때 장고 안써본사람)
플젝 몇번 하다보면,, 프레임워크 없이 개발한다는게 얼마나 어렵고 비효율적인지 다들 아실거같은데요~.. 그정도로 프레임워크 학습은 개발에 필수적이라고 생각합니다!
흠 프레임워크에 대해선 이정도하고, 글쿤! 하고만 넘어갑시당
그렇다면,
장고란?
구글에 what is django라고 검색하면 바로 저렇게 나와요.
Django: The web framework for perfectionists with deadlines
즉, 마감시간이 있는 완벽주의자를 위한 웹프레임워크라는 의미입니다.
장고를 개발한 목적/철학 정도로 생각하면 될 것 같아요.
근데 의문이 들수도있을것같아요!
장고가 프레임워크라는게 뭐 어떻다는건데?하는 의문이요.
웹 프레임워크인 장고?
프레임워크라는게, 기능과 구조의 틀을 제공하는거라더니, 도대체 장고한테 그런게 뭐가있는데?
프레임워크로서 장고는 위의 화면과 같은 틀을 기본적으로 갖고있어요.
흠.. 처음부터 와다다 외우기보단, 글쿤!하면 될것같아요.
그냥 웹프레임워크라는게, 개발을 위한기능과 구조의 틀을 제공해서 쉽고 편하다는 장점이있는데, 따라서 장고또한웹프레임워크이므로 위와 같은 기능과 구조의 틀을 제공한다는 것이죠.
즉, 위의 이미지 중 정 가운데 있는 걸 예로 들면, 관리자페이지를 위한 틀을 기본적으로 제공하기때문에 개발하기 편합니다. 관리자 페이지를 아예 첨부터 코드하나하나 구현할 필요가 없다는 말이죠.
실습하다보면 urls.py에 초기 세팅이 되어있는 /admin 주소가 있을텐데, 서버를 돌려서 admin 주소로 가시면 이 '관리자 페이지'를 확인할 수 있어요!
일단은 개념은 글쿤글쿤 하는 정도로만 가볍게~
장고의 특징?
그렇다면 장고의 특징은 무엇이 있을까요.
다음과 같습니다.
•Python 웹 프레임워크
•MTV 디자인 패턴
•오픈소스
•앱 단위로 프로젝트를 구성
파이썬을 기반으로 하는 웹프레임워크! 프레임워크 설명은 앞에서 했으니 패스할게용
MTV 디자인패턴은 다음 글에서 자세히 다룰게요.
오픈소스: 과거와 달리, 요즘은 보통 거의 모든 언어, 프레임워크나 라이브러리 등이 오픈소스인데요. 장고를 예로 설명하자면, 장고를 개발한 회사가 장고에 대한 내용을 자기 회사 내에서만 공개하는게 아니라, 모든 사람들에게 오픈합니다. (물론 정말 중요한 요소는 보안을 지킬것입니다.) 저희도 장고 공식홈페이지에 직접 들어가보면, 레퍼런스나 개발 도큐먼트를 모두 자유롭게 확인할 수 있어요.
이를 통해 일반인들이 장고를 사용해 개발하던 중, 보완할 점을 발견하거나 버그를 발견할 수도 있겠죠? 그럼 그를 회사에 알려 장고를 더 발전시킬 수 있다는 장점이 있어요.
이건 예전 전공 수업때 들은 얘기라 확실하진 않지만,, 요즘에야 대부분 오픈소스로 이런걸 관리하지만, 과거에는 그렇지 않았다고해요. 그때는 자신들의 기술이자 경쟁력을 왜 굳이 모두에게 공개하지? 라는 생각이 만연했기에!
그런데 누구더라 어디가 오픈소스로 딱 공개하니까, 생각보다 회사에 더 도움이 됐었다! 그래서 다른 회사들도 하나둘씩 오픈소스로 공개해 점차 발전해나갈수있었다!
라는 이야기를 들은 기억이.. 근데 막상 중요한 키워드는 다 까먹었네요 하하
무튼...
장고의 특징 중, 앱 단위로 프로젝트를 구성한다는건 어떤 의미일까요?
앱단위는모듈이라고 생각하면 좀 더 쉬울 것 같아요. 한 프로젝트 내에서, 어떤 기능에 대한 모듈 단위로 구성해서, 필요에 따라 뺐다 꼈다 하는거죠.
일반적으로 앱 이름은 영문 복수형으로 생성합니다.
위의 이미지를 예시로 들자면,
MyCrazyDjango라는 장고 프로젝트를 개발한다! 했을 때
그럼 그 안에는 각각 저러한 세부적인 앱단위로 프로젝트를 구성할 수 있습니다.
이것도..걍 일단지금은 가볍게 글쿤하면 될것같아요.
위 이미지 예시에 따르면, 앱 이름은 각각 blogs, likes, comments 쯤 될 것 같네요.