본문으로 바로가기

DRF | 댓글수정

category TIL 2022. 11. 13. 12:56


이거말고는 에러가 전혀 뜨지않아서 어디서 에러가 나는지 찾기가 어려웠다 파라미터로 post_id를 사용하지도 않아서 다른데서 에러가 뜬다고 생각했다.

 

우선 post_id를 파라미터로 사용하는 다른 메소드를 찾아보다가 urls에서

post_id를 받아는 오는걸 알게되었고 이걸 사용하지 않더라도 파라미터에 입력해줘야 하나? 라고 생각하면서 코드를 수정했다.

class CommentDetailAPIView(APIView):
    def delete(self, request, post_id, comment_id):
        comment=get_object_or_404(PostComment, id=comment_id)
        print(comment)
        if request.user == comment.user:
            comment.delete() # 역참조가 아니면 거의 변수
        else:
            return Response("권한이 없어요", status=status.HTTP_400_BAD_REQUEST)

    def put(self, request, post_id, comment_id):
        comment=get_object_or_404(PostComment, id=comment_id)
        print(comment)
        if request.user == comment.user:
            serializer=CommentDetailSerializer(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("권한이 없습니다", status=status.HTTP_403_FORBIDDEN)

수정후에 postman put매소드 요청을 해보고 터미널에서도 코드가 잘 실행되는걸 확인했다.