django #3 CRUD(3) - URLConf & View

Junyoung Kim·2022년 1월 12일
0

django

목록 보기
3/10

Flow(2)에서는 Migrate를 통해 Model과 Database을 연동하고, SQL문으로 Database를 작성하는 것이 아니라 python을 통해서 데이터를 생성,열람,수정,삭제하는 과정을 실습해보았다.

이제 django application의 다른 기능인 URLconfviews의 작동 과정을 이해하고, httpie를 통해 클라이언트의 request를 직접 실행해보고 URLconf과 views, model이 어떻게 상호작용하는지 알아보겠다.

그림은 django의 전체 동작 과정에서 클라이언트의 요청, URLconf, View의 로직을 간략화한 도식이다. 총 3단계로 설명하면 다음과 같다.

  • 클라이언트가 서버에 데이터를 요청한다.
  • URLconf는 그 요청을 분석하고 요청에 맞는 View에 전달한다.
  • View는 요청을 처리하기 위한 모듈을 실행하며, Data가 필요하면 Database와 연동하기 위해 Model을 호출한다.

이전에 진행했던 프로젝트의 실제 코드를 보면서 살펴보자.

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로 넘어가자.

  • code 1 : json파일을 python의 딕셔너리 형태로 반환받기 위해서json 빌트인 모듈 import
  • code 1~3 : django package의 view 모듈, 사용자가 만든 모듈인 models 모듈 import
  • code 7 : product view 로직을 class 형태로 작성
  • code 10 : view 안에 있는 post 메서드를 함수 형태로 작성
  • code 16 : import된 json 모듈을 통해 json 데이터를 파이썬의 딕셔너리 형태로 반환
  • code 18~24 : models.py에서 작성한 model의 데이터를 가져와 create Queryset 메소드 형태로 반환
  • code 29 : json으로 반환, 반환시 메시지와 status code 작성

Handler 메서드인 post() 메서드를 한줄 씩 설명하였다.

이제 python shell이 아닌 http 요청을 통해서 post() 메서드가 실제로 동작하는지 알아보겠다. httpie를 설치하고

http -v POST 127.0.0.1:8000/product menu="커피" category="콜드브루" drink="맛있는 콜드브루"

POST 요청이 성공적으로 실행되면 터미널에서 다음과 같은 json 데이터를 반환받게 된다.

0개의 댓글

관련 채용 정보