django를 다루는 첫 프로젝트로 디스커버리 익스페디션 사이트를 클론하기로 하였다.
크게 유저정보에 관련된 부분, 제품에 관련된 부분, 주문에 관련된 부분으로 나누어졌으며 그 중 주문에 관련된 부분을 맡게 되었다.
테이블 모델을 이곳에서 확인하자.
URL : https://aquerytool.com:443/aquerymain/index/?rurl=2ae50730-5645-4270-896f-677d5b23b914&
Passw0rd : sddh5l
우선 프론트엔드에서 유저의 id를 받아오고(데코레이터는 아직 미구현 사항이다) 제품의 id값, 사이즈의 id값, 수량에 대해서 정보를 전달받는다.
이를 바탕으로 제품에 대해 특정하며 만약 해당 유저의 order테이블에 status=1(장바구니 상태)이며 해당 제품이 담겨져 있을 경우 기존의 수량에 수량을 추가하고 만약 해당 제품이 없다면 새로 제품을 담아준다.
결과는 다음과 같다.
우선 유저의 id를 입력하면 해당 유저의 장바구니에 있는 제품 리스트를 만드는 모듈을 만들었다.
이후 GET 메소드로 api를 보낼경우 해당 리스트를 반환한다.
결과는 다음과 같다.
과정은 이전 장바구니 제품 추가와 비슷하나 데이터의 내용이 항상 장바구니에 있는 제품에 대해서만 데이터를 받기 때문에 추가적인 존재여부를 체크하지 않는다. 또한 여러 제품에 대해 수정사항이 있을수 있어 data를 for문을 통해 하나하나의 데이터를 받아줬다.
결과는 다음과 같다.
받아온 유저id를 통해 해당 유저의 정보를 리스트로 담아주고 위에서 사용한 모듈로 장바구니에 담겨진 제품을 모두 가져와 보내준다.
결과는 다음과 같다.
받아온 유저id를 바탕으로 사용하지 않은 쿠폰에 대해서 리스트로 만들어 보내준다.
결과는 다음과 같다.
유저id와 사용한 쿠폰, 마일리지를 정보로 받아온다.
이후 쿠폰 또는 사용한 마일리지가 있을 경우 기존의 데이터베이스에 정보를 기록한다.
쿠폰의 경우 사용한 날짜를 기록하고 마일리지는 유저 정보에서 마일리지를 차감한다.
그리고 주문의 status를 2로 바꿈으로서 장바구니가 아닌 결제완료 상태로 변경한다.
결과는 다음과 같다.