[WatchaPedia Clone] Day 4-5. Archive, Review views.py 구현
모델링 - models.py 구성 - User/View (회원가입, 로그인), User/Utils (액세스 토큰 확인 데커레이터) 까지 구성한 후 본격적으로 각 기능에 대한 views.py를 구성 과정에 들어왔다.
Archive
Archive 앱은 크게 '별점 평가 기능(Rating)', '아카이브 기능(Archive)' 기능으로 분리하였다. 각 기능에 대한 플로우를 간략하게 정리하면
Archive
- 각 유저는 각 영화에 대해
보고싶어요
,보는 중
,관심없어요
중 하나의 타입을 선택할 수 있음 - 유저-영화가 매칭되어 특정 타입으로 Archive에 저장되어 있는 경우, 다른 타입의 Archive를 저장할 경우 기존의 타입에서 수정됨
Rating
- 각 유저는 각 영화에 대한 별점 평가가 가능
- 기존 Archive에서
보고싶어요
,보는 중
이 표시된 상태에서 별점을 평가할 경우, Archive에서보고싶어요
,보는 중
이 해제됨 - Archive에서
관심없어요
가 표시된 경우 별점을 평가하더라도, Archive에서관심없어요
가 해제되지 않음 - Rating 평가가 된 상태에서 Archive의
보고싶어요
,보는 중
,관심없어요
를 누르더라도 Rating에 영향을 미치지 않음
Archive와 Rating은 서로 영향을 주고받는 관계가 일부 있으나, 독립적으로 값을 가지고 있어야 하므로 별도의 models와 view로 구성했다.
[Rating: post 기능 구현]
@id_auth
def post(self, request, content_pk):
try:
data = json.loads(request.body)
user = request.user
content = Content.objects.get(id=content_pk)
rating = data['rating']
if Rating.objects.filter(user = user, content = content).exists():
return JsonResponse({"message": "ALREADY_EIXST"}, status = 400)
Rating.objects.create(user = user, content = content, rating = rating)
return JsonResponse({"message": "SUCCESS"}, status = 201)
except json.JSONDecodeError as e:
return JsonResponse({"message": f"{e}"}, status = 400)
except KeyError:
return JsonResponse({"message": "KEY_ERROR"}, status = 400)
로그인한 유저가 Rating 점수를 평가하는 과정은 request 과정에서 url에 영화 PK값을 넣어 어떤 영화에 대한 rating을 수행하는지 지칭하고, body에 구체적인 별점 정보를 넣어 호출하면 데이터를 받아 넣도록 구성했다.
작성 중
Author And Source
이 문제에 관하여([WatchaPedia Clone] Day 4-5. Archive, Review views.py 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@leejaylight/WatchaPedia-Clone-Day-4-5.-Archive-Review-views.py-구현저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)