django_codesquad.jpg

웹 프레임워크

파이썬을 이용하여 웹개발을 할 때 자주 사용하는 프레임워크로는 Flask, Django, bottle이 있다.

프레임워크란 개발자가 무언갈 개발하고자할때, 가능한 쉽고 편하게 추상적 코딩을 해 나갈 수 있도록 특정한 틀을 만들어 제공한 툴이라고 할 수 있겠다.

예를들면, 웹서버를 구축해 배포 하기위해선 사실 굉장히 다양하고 복잡한 지식이 필요하다. 웹통신(HTTP 통신) 또한 결국은 TCP/IP 통신 위에 올려져있는 네트워크 통신이기때문에, 기본적으로 소켓을 이용한 통신(패킷을 이용한 통신)을 하고있다. Http 요청을 보낸다는건 소켓을 열어서 Http 규격양식의 데이터를 담고 특정 주소로 해당 데이터를 전송하는 것이다. 이렇게 웹서버를 구축하기 위해선 소켓프로그래밍과 같은 로우레벨의 설계까지도 필요로 한다.

하지만 프레임워크를 이용하면 위와 같은 로우레벨적인 설계는 생각할 필요가 없어진다. 전혀 몰라도 된다. 프레임워크를 만들어 배포한 사람이 자잘한 부분들을 다 완성시켜놓고 큰 틀을 만들어놨으니 나는 이를 이용하여 추상적이고 더 높은수준의 개발만 하면 되는 것이다.

About 장고, 간단한 기술

재고검색사이트의 웹 프레임워크로는 장고를 이용하기로했다. 장고는 웹프레임워크로서 웹서버 관리자 계정 및 인증에 대한 기능을 제공하고, 모델(Models)을 통한 추상적인 레벨에서의 데이터베이스 관리를 가능하게하며, HTML 작성의 편의를 위한 쉽고 간단한 템플릿 랜더링 기능등을 제공하고있다.

웹을 배포한다는건 결국 특정주소에 찾아오는 사람들에게, 해당 주소에 맞는 특정 HTML문서 파일을 만들어 전달해주는 것이다. HTML문서에서 이용자의 입력과 행동에 반응하여 시시각각 움직이는(동적인) 웹을 만드는것이 까다로운 것이지 사실 웹배포의 큰 틀 자체만 두고본다면 결코 어려운 내용은 아니다.

웹이용자에게 보여줄 HTML문서의 내용을 코딩한다.
만약 프로그래밍적 기능이 필요한 부분이 있다면 프로그래밍 언어로 작업하고(View단) HTML에 랜더링해준다.
이용자가 찾아올 주소에 HTML문서를 최종적으로 배치한다(맵핑).

Django도 결국 이러한 큰 틀 내에서 움직이고 동작한다. 좀 더 세부적인 내용도 존재하긴 하지만 결국은 큰 틀과 이어지는 가지일 뿐이다.

Django의 구조

django_mvc_mvt_pattern.png

Django에서의 코딩작업은 크게 3가지로 구분할 수 있겠다. (MVT구조)

  • View.py를 이용한 특정 URL주소에 대한 HTML문서의 표현과 기능구현에 대한 코딩
  • Models.py를 이용한 데이터베이스 구조설계에 대한 코딩
  • 기본 뼈대가되는 HTML 문서에대한 코딩

Models을 통한 DB관리도 최초 DB를 구조화하고 만드는 단계를 지나고나면(Models단) 최종적으로는 View단에서 코딩된다. Django의 MVT 구조도 결국은 위에서 서술한 큰 틀과 동일한 구조일 뿐이다.

이중 View단에서의 코딩과 Html문서 자체에 대한 코딩은 딱히 어려운 느낌은 아니었다. 그보다 Models단에서의 코딩이 낯설고 어렵게 느껴졌었다. 아무래도 DB에 대한 기본지식들이 부족했던 탓인것 같다. 따라서 Models단에서의 코딩과 그에 해당하는 DB에 대한 내용들은 추가적인 문서를 만들어 정리하고자 한다. (링크 --> https://velog.io/@dlsghl92)