Django란 파이썬으로 웹 개발을 할 수 있는 Web Application Framework 중 하나다. 웹 페이지를 개발하는 과정에서 겪는 어려움을 줄여주기 위해 다양한 도구와 라이브러리를 제공한다.
API(application programming interface)는 소프트웨어끼리 서로 통신하고 데이터를 처리할 수 있게 한다. 날씨 앱이 날씨 정보를 표시할 수 있는 이유도 API를 통해 기상청의 기상 데이터와 통신할 수 있기 때문이다. API는 Django, Flask 같은 프레임워크로 만들 수 있다.
프론트(Client)에서 request가 올 때면 백엔드에서 만든 web application server로 전달된다. 일단 지금 포스팅에서는 django로 만든 서버로 전달이 될 텐데, django 공식 문서에서 배포용으로 사용하지 말라고(웹 서버가 아닌 웹 프레임워크이므로)하지만 개발 목적으로 테스트 해보는건 문제 없다.
프론트로부터 요청이 오면 가장 먼저 확인하는 부분이다. 요청을 받으면 URLconf에서 어떤 요청인지 분석하고 요청에 맞는 로직을 호출하게 된다. url.py
는 main과 app 디렉토리에 하나씩 있는데, main의 url.py
는 어느 앱으로 갈지를 정해주고, app의 url.py
는 앱의 어느 view를 호출할지를 정해준다. 이렇게 원하는 요청을 분석해서 해당하는 view로 옮겨준다.
request/response 로직을 처리하는 곳이 Views 다. 처리에 필요한 데이터는 데이터베이스에서 가져온다. 어떤 데이터를 가져와야하고 어떻게 갖고와야 하는지, 어떤 데이터를 갖고올 수 있는지를 정의하는 곳이 Model이다. API에 존재하는 요청이라면 client 측으로 response한다.
models.py
에서 작성하는 class는 한 개 당 table이 한 개 씩 만들어 진다. class의 attribute(속성) 하나하나는 column(필드)이 된다. model.py
에서 작성한 class대로 데이터베이스에 table을 생성할 수 있고, 데이터를 가지고 오거나 업데이트 및 삭제가 가능하다.
아래는 model에서 만든 class와, migrate를 통해 구현한 데이터베이스다. Drink class가 하나의 table(릴레이션)을 만들었고, name과 category라는 속성은 데이터베이스의 필드 값이 된 것을 볼 수 있다.