본문 바로가기

Server-DB/Django

Django Web Framework는 어떻게 작동하는가

대부분의 강의와 서적이 전반적인 그림을 보여주기 보다 하나하나의 기능구현에 초점을 맞추고 있기 때문에, Django라는 프레임워크의 전반적인 작동방식을 정리해볼 필요가 있다고 느꼈다. 세세하게 그린다면, 소켓이나 WSGI와 같은 내용들도 들어가야 하지만, 프로덕트를 만든다는 관점에서는 그런 부분에 집중하지 않아도 된다고 생각한다.

 

폴 그레이엄이 '해커와 화가'에서 밝혔듯이, 내가 생각하는 개발자/프로그래머는 화가이다. 화가는 물감을 가지고 그림을 그리는 사람들이기 때문에 물감의 성분에 대해서는 자세히 알지 않아도 된다고 생각한다. 물론 더 좋은 그림을 그리기 위해서는 때로는 물감을 연구할 필요도 있다는 부분도 인정한다. 그러나 개발자/프로그래머는 건축가이지, 벽돌을 만드는 사람들이 아니다.

 

그런 관점에서 Django라는 벽돌, 부품이 어떻게 쓰이는지를 아는 것이 우선 중요하다고 생각했다. 벽돌의 구성성분보다, 이걸 가지고 어떻게 건물을 짓는가에 대한 논의가 필요하다고 생각했다. 물론 Django의 세부적인 부분들로 들어가면, 고급 기능의 구현을 위한 지식들이 필요하지만, 그러한 지식들은 그 때 그 때 익히면 된다고 생각한다.

 

Django를 사용하게 되면, Django 서버의 구동과 기본 환경설정을 담당하는 부분들이 있다. 그 부분이 manage.py, settings.py이다. 이것들을 가지고, Django 프로젝트를 기본적으로 세팅하게 되고, 또 그 안에서 필요한 기능들은 startapp이라는 명령어를 통해 별도의 application 폴더를 만들어서 구성하게 된다. 

 

이 때, user가 어떤 app으로 갈지를 우선 정해주어야 한다. 이 과정을 URL Mapping이라 칭한다. 구체적으로 urls.py에서 url들을 세팅해주어야 하는데, Django 프로젝트에 대해서도 할 수 있고, 하나하나의 Application 마다 별도로 urls.py를 만들어 Mapping 해줄 수도 있다.

 

이렇게 url을 정의하고 나면, 각 app으로 들어가게 되는데, 각각의 app은 MVT패턴을 따른다. view는 로직을 담당하며, model은 내부DB 혹은 API, 마지막으로 template이 실제로 user가 보게 될 화면을 담당하게 된다.

 

Django를 알면, 그 다음은 Node.js 환경에서의 Express에 대해 생각해보고자 한다. 두 프레임워크의 비교를 통해 Python과 JavaScript 각각으로 백엔드를 구성하는 것의 차이점에 대해서 살펴볼 수 있을 것이다.

'Server-DB > Django' 카테고리의 다른 글

DRF(Django Rest Framework)를 사용하는 이유  (0) 2021.06.09