[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()
)Reference
この問題について([2番目のプロジェクト]機能的), 我々は、より多くの情報をここで見つけました https://velog.io/@whytili/2차-프로젝트-좋아요-기능-구현テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol