0부터 시작하는 Django 공부 - Node.js 설치와 주문 구현

Jaehong Lee·2022년 6월 30일
0
post-thumbnail

0. 들어가기 앞서

  • 보통 대기업으로는 이직할때 과제를 깃을 통해 제출한다. 대기업~과제라고 검색하면 실무자들의 과제 자료를 볼 수 있다
  • 이 프론트엔드에 맞게 개발을 해야한다
  • 보통 오늘의집, 당근마켓, 배달의 민족 클론코딩을 많이 한다

1. 깃에서 프론트엔드 가져오기

2. Node.js 설치

  • https://nodejs.org/en/download/releases/
  • node.js 설치 파일을 다운받는다
  • 해당 프로젝트는 리엑트 프로젝트로 node.js가 필요하다
  • 잘 설치됬다
  • cmd를 통해 설치한 폴더로 이동해준다
  • 리엑트는 package.json에 설치해야하는 라이브러리들이 정의되있다
  • 이 라이브러리들을 설치해야한다
  • npm install을 통해 필요한 라이브러리들을 설치해준다
  • npm start를 통해 프로젝트를 실행한다
  • 해당 파일을 열어서 Django에서 사용하는 Ip 주소로 바꿔준다

3. Product와 Review의 관계 구현

  • Review가 Product를 참조받게 model을 수정하고, model이 수정됬으므로 migrate하여 DB에 반영해준다
  • 1:N 관계일때 1측을 기준으로 N측을 같이 조회하는 방법과 N측을 기준으로 1측을 같이 조회하는 방법이 있다
  • Selected/prefetch_related 어떤 것을 사용하냐에 따라 serializer의 code가 달라진다
  • 1측을 기준으로 N측을 같이 조회하는 경우

  • read_only를 True로 하여 읽기 전용으로 해주고, 하나의 상품에 여러 Review가 존재할 수 있으니 many를 True로 해준다
  • serializer가 자동으로 내부에서 prefetch_related를 실행하여 Review serializer를 가져와서 review_set( list 형태 )에 넣어준다. 이를 Product serializer에서 fields에 넣어 가져와준다
  • 잘 출력된다

4. Review에 Product_id 등록해주기

  • 서버가 Data를 보내는 방법은 3가지다

    • ?를 붙여서 보내는 Query 방식
    • /~/로 보내는 방식
    • Json data에 작성해서 보내는 방식
  • URL에 Data가 담아서 보내지기에 request.data에 저장되있다. 따라서 urls.py를 수정하지 않아도 Product_id를 전달해줄 수 있다. 하지만 이번에는 url을 수정해서 해보겠다

  • Review url은 상품 번호를 전달 받고, Review Detail은 상품과 리뷰 번호를 전달 받는다

  • 전달 받은 pid를 Product model 객체를 만들어 id에 저장하고, Review의 product에 넣어준다

  • url 뒤에 입력할 상품 번호를 넣어주고 post한다

  • 댓글 갯수도 추가해준다

5. 주문 기능을 만들어보자

  • App 생성 후 Model 구현. 주문에는 상품과 구매자가 필요하다. Model 생성하면 migrate 해주자
  • serializer 생성
  • url 추가
  • config의 url에 추가
  • view 추가
  • 관리자 페이지에서 order를 관리할 수 있게 설정하고, order를 추가한다
  • 주문에서 상품과 구매자의 정보를 가져오고 싶다
  • N측을 기준으로 1측을 같이 조회하는 경우

  • to_representation을 오버라이딩하여 보내주는 응답을 재정의하였다
  • instance에는 model 객체가 들어간다
  • 먼저, super을 통해 부모의 method를 통해 응답을 가져오고, 안에 출력할 Data를 재정의해준다
  • Product, User는 직접 정의한 serializer를 통해 안에 들어있는 instance에 들어있는 model의 data를 가져온다. instance에는 product와 review가 들어있으므로 instance.product.~로 쓴다
  • Product는 name, price, seller만 출력하게 설정한다
  • User는 출력하고 싶은 username만 출력하기 위해 따로 serializer를 만들고 넣어준다
  • 잘 나온다

6. 실습 - 주문과 로그인

  • 로그인을 해야 조회가 가능하며, 로그인한 유저의 글만 보이게 한다
  • 실행 결과
  • 로그인 유저의 글만 출력된다
profile
멋진 엔지니어가 될 때까지

0개의 댓글

관련 채용 정보