프로젝트 - Dr.Martens clone

KDG·2020년 7월 4일
1
post-thumbnail

닥터마틴 클론 프로젝트

영국 60년 정통 패션 브랜드 샌들, 슈즈, 부츠 등을 취급하는 세계적인 의류 기업 닥터마틴(www.drmartens.co.kr)을 클론하는 프로젝트를 2020.06.22 ~ 2020.07.03 약 2주간 진행했다.

프론트엔드 3명, 백엔드 3명으로 구성되었고, 나는 백엔드 중 한명이었다.

DEMO

적용 기술

  • Python
  • Django
  • Beautifulsoup, Selenium
  • Bcrypt, JWT
  • MySQL
  • Git, Github

모델링

팀원들과 함께 모델링을 했다. user, product, cart 세 부분으로 나눴다. 검은색은 user, 초록색은 product, 보라색은 cart이다.

구현한 기능

프로젝트에서 users, product_app, cart_app 세 개로 app을 나누고 각각의 기능들을 구현했다.

  • users

    • 회원가입 / 로그인
      • 회원가입시 유효성 검사
      • 회원가입시 패스워드 암호화
      • 로그인시 JWT Access 토큰 발행
    • 로그인 상태인지 확인하는 데코레이터 함수
    • 마이페이지
  • product_app

    • 상품 리스트 구현
    • 상품 상세정보 구현
    • 상품 검색 구현
    • 상품 베스트셀러 구현
  • cart_app

    • 장바구니 구현
      • 장바구니 추가 / 보기

프로젝트에서 맡은 역할

  • 데이터 모델링
  • 닥터마틴 상품 리스트 크롤링
  • 회원가입 / 로그인 모델, 뷰 작성
  • 로그인 체크하는 데코레이터 함수 작성
  • 상품 리스트 뷰 작성

기록하고 싶은 코드/함수/로직

이번 프로젝트를 진행하면서 처음 사용하는 코드들이 많았고, 알고있으면 좋을 코드들을 정리해봤다.

1. 회원가입시 유효성 검사


re 함수를 import 해와서 re.match를 쓰면 정규식과 data로 받는 아이디 패스워드를 비교한다. 비교해서 없으면 none이 나오고 에러를 리턴하는 코드이다. 정규식을 사용해서 유효성 검사를 해보는건 처음인데 테스트해볼때 특정문자가 들어가지 않으면 저장이 안되는게 신기했다.

2. 로그인 확인 데코레이터 함수


데코레이터 함수는 아직도 많이 어렵다. 이번에 로그인 확인하는 데코레이터 함수를 작성해봤는데 토큰이 있다고 해도 바로 적용되는게 아니라 토큰을 디코드 하고 db에 저장되어있는 유저id와 다시 한 번 더 확인을 해야 적용됐다는 사실을 깨닫게 되었다.

3. list comprehension

list comprehension을 실제로 사용해본건 처음이다. 처음 배울때는 적용하기 어려울 거라고 생각했었는데 막상 사용해보니 생각보다 쉬웠고, 코드가 줄었고, 속도도 빨라졌다. 언제 사용하는지 써먹을지 잘 몰랐는데 이럴때 사용해야된다는것을 깨닫게됐다. 자주 사용해야겠다고 생각했다.


select_related, prefetch_related를 처음 배웠고, 처음 써봤다. 아직 확실하게 이해하진 못했다. 그래도 일단 사용해봤는데 db에 히트하지 않고 데이터를 가져오기 때문에 속도가 향상된다.

그리고 복잡하게 포린키로 연결되어있는 테이블의 데이터를 가져올때 어느곳에서 출발할 지 기준을 잡고 __을 사용하면 중간테이블을 건너뛸수있다. 이 사실을 몰랐을때는 하나하나 테이블을 넘나들면서 코드도 길어지고 복잡했는데 __을 알고나니까 훨씬 간편하게 넘나들 수 있었고 가져올 수 있었다. 저걸 몰랐으면 지금도 헤매고있을것이다.

느낀점

잘한점

  • 처음하는 팀 프로젝트 였는데 팀간의 불화없이 밝은 분위기로 잘 끝냈다.
  • 기본이 많이 부족해서 따라가는게 버거웠지만 긍정적으로 생각하고, 해결하려고 노력했다.
  • 스크럼 방식으로 팀 미팅을 잘 진행했다.
  • 크롤링을 빠른 시간에 끝냈고, 모델을 빠른시간안에 짰다.
  • 처음 배운 코드, 안써본 코드 등을 최대한 적용해보려고 노력했다.
  • 많은 기능을 구현하진 못했지만, 필수로 들어가야할 것들은 한 것 같다.
  • 초반에는 git, github이 잘 이해가안갔지만 최대한 사용했고 익숙해지도록 노력했다.

아쉬운점

  • 기초가 부족해 기능을 구현하는데 어려움을 겪었다.
  • 기존에 배웠던 것을 나혼자의 힘으로 응용하지 못했다.
  • 기간의 문제로 더 많은 기능을 구현하지 못했다.
  • 역할을 분담하고 작업해서 내가 맡은 부분은 제대로 이해하지 않고 넘어갔다.
  • 처음 모델을 만들때 제대로 만들지 않아서 뷰를 작성하는 도중 수정했다.
  • 처음배운코드를 확실하게 이해하지 못하고 넘어갔다.

해결/개선 방법

  • 기초 공부를 차근차근 다시 하기
  • 최대한 나혼자의 힘으로 문제 해결하기
  • 역할 분담해도 다른 팀원이 한거 잘 이해하고 넘어가기
  • 모델링 처음할 때 확실하게 하기

월요일부터 2차 시작인데 몰랐던 부분 잘 짚고 넘어가서 많이 성장할 수 있도록 노력해야겠다.

5개의 댓글

comment-user-thumbnail
2020년 7월 4일

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ정민님 댓글ㅋㅋㅋㅋㅋㅋ동건님 왜 댓글도 웃겨요? 부럽다 진짜~ㅋㅋㅋㅋㅋ 동건님 고생 많으셨어요 👏🏻👏🏻👏🏻👏🏻 새 팀에선 prefetch_related 신이 되어주세요 🌟 그리고 꼭 웃겨주세요 제가 멀리서 엿듣고있을거에요 입꼬리 씰룩씰룩

1개의 답글
comment-user-thumbnail
2020년 10월 19일

django 플젝 개발할때 프론트는 어떤부분 말하는건가요?

html / js / css 만 했나요 프론트는 ??

1개의 답글