오운완 프로젝트에서 backend comment CRUD 부분을 완성했다.

강의를 참고하며 만들었기 때문에 크게 어려운 부분은 없었지만 따로 수정해야 할 부분이 있어서 기록으로 남기려고 한다.

class CommentDetailView(APIView):
    def put(self, request, article_id, comment_id):
        comment = get_object_or_404(Comment, id = comment_id)
        if request.user == comment.user:
            serializer = CommentCreateSerializer(comment, data=request.data)
            if serializer.save():
                return Response(serializer.data, status=status.HTTP_200_OK)
            else:
                return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
        else:
            return Response("자신의 댓글만 수정할 수 있습니다", status=status.HTTP_403_FORBIDDEN)

이 코드는 특정 댓글을 수정하는 기능을 가지고 있다. comment 작성자 본인일 때만 수정이 가능하도록 구성하였다.
하지만 예외처리를 해주지 않아서 실제 서버로 돌리게 되면 치명적인 오류가 발생 할 수 있다.

class CommentDetailView(APIView):
    def put(self, request, article_id, comment_id):
        try :
            comment = Comment.objects.get(id=comment_id)
        except Comment.DoesNotExist:
            return Response({"message":"댓글이 없습니다."}, status=status.HTTP_404_NOT_FOUND)
        
        if request.user == comment.user:
            serializer = CommentCreateSerializer(comment, data=request.data)
            if serializer.is_valid():
                serializer.save()
                return Response(serializer.data, status=status.HTTP_200_OK)
            else:
                return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
        else:
            return Response({"message":"자신의 댓글만 수정할 수 있습니다."}, status=status.HTTP_403_FORBIDDEN)

try except 구문을 이용해서 댓글이 존재하지 않을 경우를 예외처리 해주었다.
수정뿐만 아니라 삭제를 할 때도 댓글이 존재하는지 부터 확인해야 하기 때문에 해당 코드를 넣어주었다.

실제 배포를 염두하고 하다보니 꼼꼼하게 했다고 생각했음에도 불구하고 느끼지 못한 세세한 부분이 많다고 생각되었다.

앞으로 더 유의해서 작업하는 계기가 되었다.

가보자고!!

profile
가보자고

0개의 댓글