[2차 프로젝트] 소개합니다.

이지연·2020년 9월 11일
0

2차 프로젝트

목록 보기
1/1
post-thumbnail

✅위코드에서 2차 프로젝트가 끝났습니다.

2020년 8월 31일 ~ 2020년 9월 11일 (12일) 약 2주동안 진행되었습니다.

팀 소개

팀 명: hyunlaneige(현라해's:현란한 사람들의 모임)

팀원은 총 5명으로 구성되었습니다.
백앤드 part - 권창식, 이지연😀
프론트엔드 part - 강예지(PM), 유휘찬 ,한태규

라네즈 클론 프로젝트

🤗laneige 간략하게 소개를 하겠습니다.
수분과 보습을 연구하는 기초 화장품의 대표 회사 중 하나입니다.

laneige 사이트 구성

고객들에게 브랜드 이야기를 해주며, 쇼핑을 즐길 수 있도록 한 스토리텔링을 가진 쇼핑 웹 사이트 입니다. 메인화면 영역에서 역동적인 동영상을 보여주고, 사용자 중심 UI를 표현하였습니다.

또, 사용자별로 피부 타입별 선택을 고려하여 선택하기 쉽도록 하였습니다. 또, 제품과 소비자의 제품구매 스토리를 이용한 후기까지 제공해 사용자 맞춤형 쇼핑 서비스로 완성하였습니다.

백엔드 Git Hub
프론트엔드 Git Hub

Skills

Back-End 적용기술

Python, Django Framework
Beautifulsoup, Selenium
Bcrypt
PyJWT
Decorator
AqueryTool, MySQL
AWS EC2,RDS
CORS headers
Linux

협업 TOOL
Git, GitHub
Trello
Slack
Postman
AWS
Docker

동영상
저희가 한 프로젝트 동영상입니다!

프로젝트에서 맡은 역할

저는 이번에 라네즈의 Product부분을 맡았습니다.

  • Database modeling를 ERD모델로 설계
  • web crawling과 DB script.py파일 작성 및 업로드
  • 상품 전체목록보기 Endpoint 구현
  • 상품 상세보기 Endpoint 구현
  • 상품 검색기능 Endpoint 구현
  • 상품 목록보기 Pagination처리
  • unit Test작성

기억하고 싶은 코드/함수/로직 & 고민했던 부분

Path parameter vs Query String?
프로젝트를 하면서 RESTFUL API, Query String때문에 코드를 수정해야 했던 기억이 있습니다.

이렇게 쓰나 저렇게 쓰나 똑같은 결과가 나오는데😒
다들 쿼리스트링만 써야 한다고만 하고 정확한 이유를 말해주지 않았습니다.

그리고 공부하면서야 알았습니다. Query String은 RESTFUL API에 속한 하나의 표현방식이란 걸 말이죠!!부끄러웠어요ㅠ

사실은 저는 Path parameter과 Query String을 고민했던 것이었습니다.

그렇다면!!!
Path parameter과 Query String을 언제 써야 하냐?
Path parameter : 어떤 resource를 식별 할 때
Query String : , filter, search, ordering, pagenation

저는 상품상세보기, 상품 검색 같은 경우에 filter, search, ordering, pagenation을 적용해야했기에 Query String을 써야 하는 것이 맞았습니다!!

상품 상세보기 Endpoint 구현


다음은 상품 상세보기 페이지에 대한 프론트 단에게 주기 위한 데이터들입니다.

실수

여기서 실수했던 것이 하나 있었습니다!...!

그림에서 보듯이 그림과 태그는 여러 개 입니다.


처음에 모델링 작업을 할 때 이미지와 태그는 1:1 관계로 구성하고 각 상품별 이미지나 태그를 하나의 로우에 전부 넣어줬었는데, 프론트에 데이터를 전달할 때 하드코딩하는 문제가 있었습니다.

이러한 문제를 겪고 데이터베이스를 1:다 관계로 변경하면서 좀 더 편하게 가져올 수 있도록 하고 하드코딩 된 내용을 삭제했습니다.

"어떻게 바꾸었는가?"

Prefetch로 조인을 하고 list comprehension을 이용!

좀 더 자세히 설명을 하자면, 역참조는 one-to-one or many-to-one)이거나, 또는 정참조 foreign key 일 때 사용합니다.

저의 경우에는 image가 product_id를 foreignkey로 하고 있어 Prefetch를 이용하였습니다!

그리고 .all()를 하게 되면
[image객체1, image객체2, image객체3 ....]나옵니다.

Python에서 한 줄 안에 for문과 if문을 한번에 처리할 수 있는 list comprehension을 적용해 한 컬럼에 하나의 이미지 or 하나의 태그만 있도록 수정하였습니다.

상품 검색기능 Endpoint 구현

Q객체를 사용하여 상품 검색 기능 로직을 구현한 것입니다.

"Q객체가 무엇이냐?"

And or not연산자를 이용해 조건을 걸어서 데이터를 가져올 수 있게 해주는 객체입니다.

Icontains는 database에서 like와 같은 기능입니다.

그래서 korean_name이 keyword와 일부 같거나 혹은 englishname이 keyword와 같은 경우 200과 함께 리턴 시켜줬습니다.

Keyword가 없을 경우는 해당 메시지와 함께 400에러를 반환시켜줬습니다.

이번 프로젝트 소감

1차 프로젝트때는 프론트와 백엔드분들과 소통이 많이 부족했습니다.

그런데, 갑자기 코로나 2.5단계가 되면서 '아..이번에는 진짜 더 안되겠구나....또르르..륵..'했습니다.

그런데, 정말 감사하게도 팀원 분들이 모두 으쌰으샤 하는 분위기 였습니다!! 그래서 저희 팀은 휘찬님 집에서 하루 종일 함께 지내며 코드를 짰던 기억이 납니다. 밥먹고 바로 코딩 모드로 돌아가는 우리...진짜 너무 멋있었다🤩

그리고 매일 아침, 집가는 길 집을 데려다 준 동기 창식님에게 정말 감사합니다.

더운 여름 날 치킨과 맥주로 하루의 끝을 보내고, 지치면 옥상에 올라가 우스운 대화를 나누며 스트레스를 풀곤 했습니다.

학원을 수료하고 나면 많이 그리울 것같습니다. 그 뜨겁던 여름 밤이

profile
Everyday STEP BY STEP

0개의 댓글