본문 바로가기
Python/FLASK

Flask - 인스타그램 클론코딩(댓글 수정, 삭제 구현)

by sophia02 2022. 11. 20.

구현하기에 앞서 댓글 수정 및 삭제는 작성자만 수행할 수 있는 기능이라는 생각이 들어 유저를 구분해줄 수 있는 jwt를 사용해주어야 겠다는 생각이 들었다.

PUT 


구현하기 앞서 댓글의 경우 기본적으로는 게시물 수정과 비슷하나, 게시물 id 뿐만아니라 해당 댓글의 id 또한 필요함을 알 수 있다.

따라서

class CommentDetail(Resource):
    @classmethod
    @jwt_required()
    def put(cls, post_id, comment_id):
        comment_json = request.get_json()
        username = get_jwt_identity()
        author_id = UserModel.find_by_username(username).id
        comment = CommentModel.find_by_id(comment_id)
        post = PostModel.find_by_id(post_id)
        # 댓글 존재 여부 확인
        if not comment:
            return {"Error": "댓글을 찾을 수 없습니다."}, 404

        # 댓글의 저자와, 요청을 보낸 사용자가 같다면 수정을 진행할 수 있다.
        if comment.author_id == author_id:
           comment.update_to_db(comment_json)
        else:
            return {"Error": "댓글은 작성자만 수정할 수 있습니다."}, 403

        return comment_schema.dump(post), 200

이렇게 작성해주었다.

테스트를 수행해보면

기존 7번 댓글

이제 진행한 뒤 GET으로 확인해 보면

잘 수정이 되었습니다!

이때 만약 사용자를 다르게 한다면

이렇게 에러 메시지를 보여주게 됩니다.


DELETE

put과 비슷한 방법으로 진행됩니다. 삭제 또한 댓글을 쓴 작성자 본인만이 삭제할 수 있게 진행되어야 하므로 jwt를 사용합니다.

    @classmethod
    @jwt_required()
    def delete(cls, post_id, comment_id):
        username = get_jwt_identity()
        author_id = UserModel.find_by_username(username).id
        post = PostModel.find_by_id(post_id)
        comment = CommentModel.find_by_id(comment_id)
        if comment:
            if (post.id == post_id) and (comment.author_id == author_id):
                comment.delete_from_db()
                return {"message": "댓글이 성공적으로 삭제되었습니다."}, 200
            else:
                return {"Error": "댓글은 작성자만 삭제할 수 있습니다."}, 403
        else:
            return {"Error": "댓글을 찾을 수 없습니다."}, 404

 

진행해보면

라는 문구가 반겨줍니다. 다시 GET 요청으로 확인해보면

7번 댓글이었던 졸려용이 사라졌다는 것을 볼 수 있습니다.

put과 마찬가지로 babo가 작성한 6번 댓글을 다른 사람이 삭제하려고 한다면

이런 오류 메시지를 볼 수 있습니다.

'Python > FLASK' 카테고리의 다른 글

[플라스크] - 비즈니스 로직  (0) 2022.11.27
플라스크 - WSGI?  (0) 2022.11.13
인스타그램 클론코딩하기  (0) 2022.11.06
오류 모음집  (0) 2022.10.09
직렬화/ 역직렬화 처리하기  (0) 2022.09.12