[2番目のプロジェクト]機能的


良い実施


2つ目のプロジェクトで、私が担当している機能の1つは좋아요 기능です.
「良い」機能を実現すると同時に、post関数とdelete関数をコメントのようにそれぞれ作成すべきだと最初は思っていました.
しかし、私は考えて、良い状況と評論は違います.
現在は강의에 좋아요를 누르지 않았으면 좋아요가 생성です.
機能を강의에 좋아요를 누른 상태에서 또 누르면 좋아요가 삭제で実装する必要があります.
これをどのように実現するかを考えるためにget_or_create法を用いた.
class LikeView(View):
    @Authorize
    def post(self,request,course_id):
        try:
           
            like, is_like = Like.objects.get_or_create(course_id=course_id, user_id=request.user.id)
            
            if not is_like:
                like.delete()
                return JsonResponse({"message" : "DELETE_LIKE"}, status=200)
            return JsonResponse({"message" : "SUCCESS_LIKE"}, status=200)

        except IntegrityError:
            return JsonResponse({"message": "INVALID_VALUE"}, status=401)
get_or_createの場合、(objects,created)というtupleフォーマットが返されます.
2番目のパラメータcreatedはboolean flagであり、1番目のオブジェクトは존재하면 True존재하지 않으면 Falseを返します.
Like.objects.get_or_create(course_id=course_id, user_id=request.user.id)
            
if not is_like:
	like.delete()
すなわち、上記のコードが現在登録されているユーザ(user id=request.user.id)は、このカリキュラム(course id=course id)において좋아요를 누르지 않았으면 is_like가 trueに対して賛を生成し、좋아요를 누른 상태면 is_like가 falseに対してコメントを削除した(like.delete())