Django란?
- 파이썬으로 만들어진 무료 오픈소스 웹 애플리케이션 프레임워크
- 쉽고 빠르게 웹사이트를 개발할 수 있도록 돕는 구성요소로 이루어진 웹 프레임워크
Django의 유래
웹 사이트를 구축할 때, 비슷한 유형의 요소들이 항상 필요하다. (예를 들어, 회원가입, 로그인, 로그아웃 등)
오래전에 웹 개발자들은 비슷한 문제들에 직면한다는 것을 깨닫고 팀을 조직하여 바로 사용할 수 있는 여러 프레임워크를 만들었다.
그중 하나가 장고!
다시 발명해야 하는 문제로부터 해방감을 주고, 새로운 웹사이트를 개발할 때 뒤따르는 간접비용의 부담을 덜어준다.
Django는 MVT(MVC) 모델이다.
초기의 웹사이트는 데이터베이스 쿼리, 디자인 등의 각각 다른 부분을 담당하는 다양한 코드들이 하나의 파일에서 관리되었다. 따라서, 예를 들어 디자인 담당의 개발자가 실수로 데이터베이스 부분의 코드를 잘못 건드리는 경우, 디자인 부분 뿐만 아니라 시스템 전체에 영향을 끼치는 구조였다. 이 해결책으로 나온 것이 MVC모델이다.
- Model: 데이터베이스 관련 로직
- View: 웹브라우저에 실제로 보이는 부분에 관련 로직 (장고에서는 template)
- Control: View와 Model을 이어주는 로직 (장고에서는 View)
프레임워크가 필요한 이유
편지(request, 요청)가 도착했는지 확인해주는 메일박스(port, 포트)가 있다고 상상해보자.
웹 서버는 받은 편지를 읽고 웹 페이지와 함꼐 답장을 준다.
그런데 무언가를 주고 받고 싶을 때 안에 내용이 있어야 하는데, 장고는 그 특정 콘텐츠를 만들 수 있는 역할을 한다.
누군가가 서버에 웹 사이트를 요청하면 어떤 일이 벌어질까?
먼저, 웹 서버에 요청이 오면 장고로 전달된다. 장고 urlresolver는 웹 페이지의 주소를 가져와 무엇을 할지 확인한다.
이 urlreslover는 패턴 목록을 가져와 URL과 맞는지 처음부터 하나씩 대조해 식별하는데, 만약 일치하는 패턴이 있으면 장고는 해당 요청을 관련된 함수(view)에 넘겨준다.
집배원을 생각해보자. 집배원은 거리를 걸으며 집집이 편지와 대조해서 주소와 번지를 확인한다. 주소와 번지가 일치하면 그 곳에 편지를 배달하는데 urlresolver가 이 집배원과 같은 역할을 한다.
view함수에서 일어나는 일 예시
특정 정보를 데이터베이스에서 찾을 수 있다. 그런데 만약 사용자가 데이터의 수정을 요청한다면 어떻게 될까?
view함수는 수정할 수 있는 권한이 있는지 확인하고 나서, 수정해 다시 답장을 할 것 이다.
그러고 나서 view는 답장을 생성하여, 장고는 그 답장을 그 사용자의 웹 브라우저에 보내주는 역할을 한다.
참고1: https://tutorial.djangogirls.org/ko/django
참고2: https://velog.io/@rosewwross/Django%EB%9E%80-sck638v59x