TIL 19 | Django

임종성·2021년 7월 15일
0

Django

목록 보기
1/17
post-thumbnail

드디어 Django를 배우게 되었다. Django란 무엇이고, 우리는 왜 Django를 사용하는가? Django의 MVT Pattern과 웹사이트에서 Django가 어떤 역할을 하는지 workflow를 살펴보고 개념을 이해하자.

Framework vs Library

Django는 파이썬으로 작성된 오픈소스 웹 프레임워크다.

Framework는 일종의 뼈대, 틀을 의미하며 어떤 문제를 해결하거나 작업을 하기 위해 상호 협력하는 클래스, 인터페이스의 집합이다. Framework는 이미 정해져 있고, 구조화 되어있기때문에 우리는 제공된 프레임워크에 따라 작업이 가능하다. Library는 단순히 활용가능한 도구들의 집합으로, 우리가 원할 때 취사선택이 가능한 도구의 모음이다.

프레임워크와 라이브러리의 중요한 차이는 바로 사용하는 주체가 다르다는 점이다. 프레임워크는 전체적인 흐름을 자체적으로 가지고 있고 사용자는 그저 틀에 맞추어 필요한 코드를 넣을 뿐이지만, 라이브러리는 사용자가 전체적인 흐름을 만들어 필요한 도구들을 가져다 쓰는 개념이다.

MVT(Model-View-Template) Pattern

Django에서는 웹 프로그래밍 영역을 3가지 개념으로 나누어 개발한다.

  • Model : 모델은 Django가 처리하는 데이터베이스 테이블을 의미한다.
  • View : 실질적으로 프로그램 로직이 동작하여 데이터를 가져오고 처리한 결과를 템플릿에 전달하는 역할을 수행한다.
  • Template : 사용자가 보게 될 UI 부분을 의미한다.

Django Workflow

Django를 제대로 사용하기 위해서는 Django가 어떤 Process, Cycle을 통해 운용되는지 잘 이해해야 한다. HTTP를 통해 클라이언트의 Request를 서버가 어떻게 Respond 하는지 알아보자.

  1. 클라이언트인 사용자는 우리가 만든 어플리케이션을 보기 위해 Request를 한다.

  2. 클라이언트가 요청을 하면 웹 서버(Nginx, Apache, 경량 웹서버 등)가 요청을 맞이한다.

    보통 Nginx나 Apache는 상용에서 사용하며, Django에서는 개발을 위해 경량개발 웹서버가 이미 세팅되어있다. 따라서 개발할때는 경량 웹서버를 사용하고, 상용에 배포할 경우 Nginx나 Apache를 사용한다.

  3. WSGI는 웹 서버와 Django Framework를 이어주는 역할을 한다.

    웹 서버에서의 명령을 프레임워크가 이해할 수 없으니 그 사이를 메꿔주는 역할을 하는 것이다. Django와 Server가 이어져서 클라이언트의 요청이 URLconf로 넘어간다.

  4. 요청을 받아 URLconf를 이용하여 url을 분석하고, 적합한 View로 이 요청을 보낸다.

  5. View는 사용자 요청을 받아 데이터 베이스 어디에 접근해서 어떤 데이터를 가공할것인지 Model에게 알려준다.

  6. Model은 Database와 커넥션을 해 필요한 DB 연산을 처리한다.

  7. DB가 다시 Model로 결과값을 보내주면 모델이 결과를 View로 전달한다.

  8. View는 우리에게 보내줄 데이터를 다시 Template에게 전달해준다.

  9. Template는 .js나 .html과 같은 페이지를 만들어서 웹브라우저에게 넘겨준다.

Django는 이와 같은 Workflow를 통해 사용자의 Request를 Respond 해준다. 이렇게 개념으로만 보면 그저 단계별로 요청을 전달하고 응답을 해주는 단순한 싸이클처럼 보인다.

Today I Learned

실제로 Django Tutorial을 통해 직접 간단한 어플리케이션을 작동시키고 Django Project를 위한 개발환경을 세팅하면서 보니 생각해야하는 개념이 훨씬 많았다. Django Project의 초기 세팅을 위해 가상 환경을 생성하고, Database를 생성하고, Python Package를 설치하고, 각종 세팅과 뷰 작성, 모델 활성화 등 고려해야 할 사항이 너무 많았다.

처음에는 각 코드들이 의미하는 바도 잘 모르겠고, Django Project 내부 파일의 역할과 의미도 모르는 상태다 보니 이대로 진행해도 괜찮을까라는 생각을 했다. 하지만 조금씩 workflow에 대해 이해하고 반복할 때마다 익숙해질거라는 생각이 들어 조급해지지 말자고 생각했다. 앞으로 모르는, 이해가 잘 안되는 개념이 있을때마다 하나하나 천천히 배워간다고 생각하며 Django를 즐겨야겠다.

profile
어디를 가든 마음을 다해 가자

0개의 댓글