Flow(2)에서는 Migrate를 통해 Model과 Database을 연동하고, SQL문으로 Database를 작성하는 것이 아니라 python을 통해서 데이터를 생성,열람,수정,삭제하는 과정을 실습해보았다.
이제 django application의 다른 기능인 URLconf
와 views
의 작동 과정을 이해하고, httpie를 통해 클라이언트의 request를 직접 실행해보고 URLconf과 views, model이 어떻게 상호작용하는지 알아보겠다.
그림은 django의 전체 동작 과정에서 클라이언트의 요청, URLconf, View의 로직을 간략화한 도식이다. 총 3단계로 설명하면 다음과 같다.
이전에 진행했던 프로젝트의 실제 코드를 보면서 살펴보자.
django의 URLconf에 해당하는 urls.py
다. django 패키지에 urls 모듈에서 path 메서드를 import해서 URLconf 기능을 활성화시켰다.
urlpatterns
에는 후술할 view.py
에 모듈에 맞는 url을 지정해준다. urls.py는 API에 해당하는 프로젝트마다 하나 이상 존재하게 되는데, 사진은 westarbucks
라는 프로젝트의 westarbucks
폴더 안에 존재하는 메인 URLconfs로써, 각각의 app의 path를 django의 urls 모듈의 include 메서드를 통해서 지정해주는 역할을 한다. product
app의 urls.py로 넘어가자.
해당 app의 urls.py를 확인해보면 상품 전체 목록을 보는 view라면 첫번째 path를, 개별 상품을 확인하려면 두번째 path를, 개별 상품의 review를 보려면 세번째 path를 이용하게 되는 것을 알 수 있다. 다음으로 views.py로 넘어가자.
Handler 메서드인 post() 메서드를 한줄 씩 설명하였다.
이제 python shell이 아닌 http 요청을 통해서 post() 메서드가 실제로 동작하는지 알아보겠다. httpie를 설치하고
http -v POST 127.0.0.1:8000/product menu="커피" category="콜드브루" drink="맛있는 콜드브루"
POST 요청이 성공적으로 실행되면 터미널에서 다음과 같은 json 데이터를 반환받게 된다.