좋은 잠자리 문화를 선도하고 있는 STAY를 큐레이팅하는 여행 플렛폼 STAYFOLIO 클론 프로젝트 입니다.
짧은 프로젝트 기간 동안 개발에 집중할 수 있도록 STAYFOLIO 만의 감성적인 UI와 기획을 일부 참고하여 숙박 플랫폼 서비스를 구현하였습니다.
숙박업 서비스를 제공하는 사이트 특성상 다양한
Front-end : 옥채현 ,이가윤, 이석호
Back-end : 김재엽, 이찬영
🗓 : 2022.01.10. ~ 2022.01.21.
class StayListView(View):
def get(self, request):
try:
city_name = request.GET.get('city', None)
check_in = request.GET.get('checkin', None)
check_out = request.GET.get('checkout', None)
room_min_price = request.GET.get('minprice', 10000)
room_max_price = request.GET.get('maxprice', None)
category = request.GET.get('category', None)
max_num_people = request.GET.get('adult', None)
sorts = request.GET.get('sort','id')
q=Q()
if city_name:
q &= Q(state=city_name)
if category:
q &= Q(category__name=category)
if max_num_people:
q &= Q(max_people__gte=max_num_people)
if room_max_price:
q &= Q(price__lte=int(room_max_price))
if room_min_price:
q &= Q(price__gte=int(room_min_price))
stays = Stay.objects.all()
stays = stays.annotate(price=Min('room__roomprice__cost__price'))
if check_in and check_out:
if not include_weekday_boolean(check_in, check_out):
stays = stays.annotate(price=Max('room__roomprice__cost__price'))
stays = stays.annotate(max_people=Max('room__max_num_people'), base_people=Max('room__base_num_people'),\
min_price=Min('room__roomprice__cost__price'), max_price=Max('room__roomprice__cost__price'))\
.filter(q).order_by(sorts)
if check_in and check_out:
stays = stays.exclude(room__reservation__check_in_date__gt=check_out, room__reservation__check_out_date__lt=check_in)
result = [{
'id' : stay.id,
'hotelNameKor' : stay.name,
'price' : f"{convert_price(stay.min_price)} ~ {convert_price(stay.max_price)}",
'baseNum' : stay.base_people,
'maxNum' : stay.max_people,
'stayType' : stay.category.name,
'img' : stay.thumbnail_url,
}for stay in stays]
return JsonResponse({'data' : result}, status=200)
except KeyError:
return JsonResponse({'message' : 'KEYERROR'}, status=401)
except JSONDecodeError:
return JsonResponse({'message' : 'JSON_DECODE_ERROR'}, status=400)
except FieldError:
return JsonResponse({'message' : 'Bad_Request'}, status=404)
이번에는 새롭게 RDS와 S3를 사용하며 aws배포에 관한 경험을 해볼 수 있었다.
철저한 model작성을 통해서 단 한번의 수정이 없이 진행 할 수 있었다.
1차때 학습했던 위기에 맞딱드려 이겨내는 법을 성장할 수 있었다.
어려움을 만났을때, 차분하게 구글링하면서 문제를 해결할 수 있는 능력을 기를 수 있었다.
잘하는 사람과 협업을 하며, 모르는 개념을 탐구하고 학습하는 방법을 배우고 성장하였다.
처음으로 나 혼자가 아닌 협업을 하면서 requirements.txt에 중요성도 느끼면서 소통이 무엇인가를 배울 수 있었다. csv 파일과 db관리에 대한 자신감을 갖고 진행하였으나, git rebase, query같은 기본적인 지식의 부족에 의해서 어려움이 있었다. 기본기가 가장 중요하다는것을 무엇보다도 깨닫는 프로젝트였다.
그리고 같이한 동료와 팀원들에게도 감사하다는 인사를 전하고 싶다. 부족한 부분을 알려주고 도와주면서 포기하지 않게 끝까지 함께하면 된다는 정신을 알려준 팀원들에게 너무 감사하고 사랑한다는 말을 전하고 싶다.
나는 개발자로써 가장 중요한것은 "같이 일하고 싶은 사람이 되는것" 이라고 생각한다. 그러기 위해서 꾸준히 기본기를 쌓으면서 실력을 꾸준히 성장 시켜야 한다는것을 느꼈다.
마지막으로 내 인생에서 새로운 전환점이 될 프로젝트를 같이한 팀원들에게 다시한번 감사의 인사를 전하고 싶다.