21.3.25
1차 프로젝트 10일차
최종 제작일 및 최종발표 준비일
1. 스탠딩 미팅
프론트 / 백엔드 진행 상황 공유 및 오늘 할 일
<프론트>
- 전반적인 부분 손보기(푸터, 로그인, 사인인 등)
- 플로우 잘 흘러가는지 손보기
- 장애 요인 : 브랜치 충돌 나는 점에 대해 알아봄(마스터 최신화)
- 메인페이지 맞춰보기
- 상세페이지 세부 조절, 장바구니 모달 외 기본 구현 완료, 컨플릭트 날 때마다 맞추기
<백엔드>
- 메인페이지 맞추고 장바구니 및 주문 마무리
- 쿠폰 마무리 + 그 외 필요 작업(데이터) 나눠서 하기
2. 코드 리뷰
1. 위시리스트
- 프론트에서 보내주는 정보(payload)는 결과가 아니다. 따라서 results라는 변수를 쓰는 것은 부적절하다. 또한 객체만 받으면 되기 때문에 굳이 변수에 담아 할 필요가 없다.
- 일단 받는 값
before
{"results": [
{"product_id": 1,
"quantity" :4,
"product_option_id": "",
"product_option_quantity":0
}]
}
after
{"product_id": 1,
"quantity" :4,
"product_option_id": "",
"product_option_quantity":0
}
이에 따른 적절한 코드는 다음과 같다.
before
class WishListView(View):
@auth_check
@transaction.atomic
def post(self, request):
try:
results = json.loads(request.body)['results']
user_id = request.user.id
for result in results:
product_id = result['product_id']
quantity = result['quantity']
product_option_id = result['product_option_id']
product_option_quantity = result['product_option_quantity']
after
class WishListView(View):
@auth_check
@transaction.atomic
def post(self, request):
try:
data = json.loads(request.body)
user_id = request.user.id
product_id = data['product_id']
quantity = data['quantity']
product_option_id = data['product_option_id']
product_option_quantity = data['product_option_quantity']
- data로 반복문 없이 아주 깔끔하게 받아올 수 있다.
product_id와 user_id는 프론트가 주는 정보와 토큰으로 알 수 있기 때문.
2. 쿠폰
- RESTful한 url 사용하기
- user/coupon/~~ 이런 식도 생각하기.
- 불필요한 연속된 반복문 제거하는 법
result = []
for i in user_coupon_list:
if i in sub_category_coupon_list:
result.append(i)
coupon_name = []
for j in result:
coupon = Coupon.objects.get(id=j)
coupon_name.append(coupon.name)
- 여기서 유저 쿠폰 리스트가 서브 카테고리 쿠폰 리스트 아이디에 속해 있으면 그 아이디를 또 쿠폰네임에 담기 위해 coupon.name식으로 다시 반복문을 돌린 것이다.
(즉 결과는 [1, 2]로 나온 뒤 이걸 또 반복문을 돌려서 ['할인쿠폰1', '할인쿠폰2'] 이렇게 나오게.) - 해결 : 리스트 컴프리핸션으로 한 줄로 처리
coupon_name = [Coupon.objects.get(id=j).name for j in [i for i in user_coupon_list if i in sub_category_coupon_list]]
- 어제 해결한 문제 중 새로운 쿠폰을 등록할 때 갑자기 모든 쿠폰을 가져와서 이미 존재하는 쿠폰마다 방금 등록한 쿠폰과 동일하게 서브 카테고리를 씌워버리는 로직
- 원래 의도한 것 : 새로 추가하는 서브카테고리마다 새로운 쿠폰을 적용하되 여러 서브카테고리를 한 번에 등록할 수 있게 하는 것
- 필요했던 것 : 리스트 형태의 서브 카테고리가 가진 쿼리셋을 풀어서 그 안에 오브젝트의 name의 아이디와 쿠폰 아이디를 엮는 것.
- 해결 :
coupon = Coupon.objects.get(name=data['name'])
# 먼저 쿠폰을 가져오고(만들어진 것)
sub_categories = SubCategory.objects.filter(name__in=data['sub_category_name'])
# name__in : 서브카테고리 객체를 네임으로 필터링할 때 프론트로부터 받아온느 제이슨 데이터 형태가 리스트일 때 쓰는 방식
for sub_category in sub_categories:
coupon_sub_category = CouponSubCategory.objects.create(
coupon=coupon,
sub_category=sub_category
)
{
"name" : "쿠폰4",
"discount_price" : 4000,
"issue_date" : "2021-03-20",
"expire_date" : "2022-03-19",
"sub_category_name" : ["신발"]
}
- 여기서 신발, 양말 등 여러 리스트 형태로 와도 잘 입력된다.
- 실제 데이터 베이스 결과(왼:쿠폰_id, 오 : 서브카테고리_id)
3. 전체 세션 : AWS 및 실습
- 이론 간단히 듣고 실제로 해보기
- 데이터베이스 빼온 뒤 AWS에 넣기에서 막힘. 추후에 다시 해보기.
version 문제 였음.(5.26 < 8.22)
4. 그 외 한 일 + 팀원 간 협업
- 데이터베이스 집어 넣을 CSV 파일 생성
- 주문, 전체페이지, 장바구니 등 전반적인 것 프론트+백 맞춰보고 서로 오류 찾기.(현재 진행 중)
데이터 다 집어넣은 로직 팀원 블로그
5. 익일 할 일
- 마지막 스탠드 미팅
- 지침에 맞는 최종 발표 준비
Author And Source
이 문제에 관하여(21.3.25), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sinichy7/21.3.25프로젝트저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)