좋아요 카운트
상황
- 질의응답 게시판의 게시글과 답변의 좋아요를 클릭 시, 좋아요 count를 체크하여 보여주려고 함
(로그인한 유저는 좋아요를 눌렀을 경우 다시 누르면 취소가 되니 그땐 count가 빠져야함)
해결
if (questionlike.includes(user_id) != true) {
button_like_question.setAttribute("class", "btn btn-primary");
button_like_question.innerText = " ♥ " + details.like.length;
} else {
button_like_question.setAttribute("class", "btn btn-danger");
button_like_question.innerText = " ♡ " + details.like.length;
}
- like 안에 user_id가 포함되어져 있지 않다면 버튼 클래스를 “btn btn-primary”로 변경하고
details.like.length를 텍스트안에 넣어 카운트 수로 표현하였다.
여기서 문제발견!
- 무슨 이유인지 다른 유저로 로그인을 해도 좋아요 버튼을 클릭 하였을 때, 유저 마다 좋아요를
특정하는 것이 아니라 버튼을 누르는 기준으로 좋아요가 눌리고 취소되었다.
원인)
- 백엔드 개발 과정 중에 qnq 앱에서 views.py에서 설정하지 못하고 넘어간 문제가 있었다.
# qna / views.py
class LikeQuestionView(APIView):
def post(self, request, question_id):
user = request.user
target_question_like = QuestionLikeModel.objects.filter(question=question_id, user=user)
if not target_question_like:
target_question = QnAQuestionModel.objects.get(id=question_id)
target_question_like = QuestionLikeModel.objects.create(question=target_question, user=user)
return Response({"message":"좋아요를 눌렀다북!"},status=status.HTTP_200_OK)
else:
target_question_like.delete()
return Response({"message":"좋아요를 취소했다북.."},status=status.HTTP_200_OK)
class LikeAnswerView(APIView):
def post(self, request, answer_id):
print("답글 좋아요 API 작동하라!")
user = request.user
target_answer_like = AnswerLikeModel.objects.filter(answer=answer_id, user=user)
if not target_answer_like:
target_answer = QnAAnswerModel.objects.get(id=answer_id)
target_answer_like = AnswerLikeModel.objects.create(answer=target_answer, user=user)
return Response({"message":"좋아요를 눌렀다북!"},status=status.HTTP_200_OK)
else:
target_answer_like.delete()
return Response({"message":"좋아요를 취소했다북.."},status=status.HTTP_200_OK)
- 위 코드에서 target_question_like 와 target_answer_like 를 선언할 때,
각자의 likeModel.objects.filter를 통해서 user=user를 집어넣어 user 특정해주어야하는데 해주지 않았던 것이다. - LikeQuestionView 와 LikeAnswerView 에 모두 입력 해주었더니 좋아요 기능이 원할하게 잘 작동하였다.
'개발_TIL' 카테고리의 다른 글
개발_TIL | 2022-08-01 (72) (0) | 2022.08.02 |
---|---|
개발_TIL | 2022-07-29 (71) (0) | 2022.07.31 |
개발_TIL | 2022-07-27 (69) (0) | 2022.07.27 |
개발_TIL | 2022-07-26 (68) (0) | 2022.07.26 |
개발_TIL | 2022-07-25 (67) (0) | 2022.07.26 |