모델링 - models.py 구성 - User/View (회원가입, 로그인), User/Utils (액세스 토큰 확인 데커레이터) 까지 구성한 후 본격적으로 각 기능에 대한 views.py를 구성 과정에 들어왔다.
Archive 앱은 크게 '별점 평가 기능(Rating)', '아카이브 기능(Archive)' 기능으로 분리하였다. 각 기능에 대한 플로우를 간략하게 정리하면
보고싶어요
, 보는 중
, 관심없어요
중 하나의 타입을 선택할 수 있음보고싶어요
, 보는 중
이 표시된 상태에서 별점을 평가할 경우, Archive에서 보고싶어요
, 보는 중
이 해제됨관심없어요
가 표시된 경우 별점을 평가하더라도, 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에 구체적인 별점 정보를 넣어 호출하면 데이터를 받아 넣도록 구성했다.
작성 중