이번에는 그 동안 블로깅 할 때마다 익숙하지 않았던 특유의 딱딱한 어투와 다르게
조금은 일상적인 어투로 써봐야겠다는 생각을 가지면서..
1차 프로젝트였던 형님의 파우치 후기 레쯔기릿 해보겠다.
(사이트) 화장품 관련 리뷰 사이트인 언니의 파우치를 본따 형님의 파우치 라는 사이트를 제작
(특징) 순수 남자 그리고 평균 연령이 타 팀에 비해 높은 형님들로 구성 (평균 31.3세)
(특히 나는 이름의 마지막에 '형'이 들어간다는 이유로 형님의 파우치 팀에 소속되었다는 전설이...)
(구성) 프론트엔드 개발자 3명, 백엔드 개발자 3명, 총 6명으로 구성
(언어, 프레임워크, 데이터베이스) Python, Django Web Framework, MySQL
(가상 환경) Miniconda3
(암호화, 토큰 발행) Bcrypt, JWT
(배포) AWS EC2, RDS
(통신메커니즘) CORS headers
(모델링) 클론 사이트의 데이터 모델링을 진행
(메인, 랭킹 뷰) 랭킹 페이지의 GET 뷰 구현을 위해 Selenium을 이용하여 약 1800개 제품의 정보를 크롤링하여 프론트에서 원하는 데이터를 전달했으며, 메인페이지의 리뷰 및 포스트 데이터를 함께 전달하는 뷰를 작성
우수 제품 4개를 보여주는 View 파일 작성 과정에서 평점(RATE)를 전달해야 했다.
이 때 For문을 활용하여 평점을 계산해야 한다는 생각이 들어 정신이 아득했으나 분명 다른 방법이 있을 것이라고 생각하고 구글링을 통해 찾아낸 것이 aggregate였다.
product_ranking = [
{'id': product.id,
'category': product.secondcategory.name,
'brand': product.brand_name,
'productName': product.name,
'productImage': product.product_image,
'rate': [UserScore.objects.filter(product_id=product.id).aggregate(Avg('score'))['score__avg'],
len(UserScore.objects.filter(product_id=product.id))]
} for product in products[:4]]