본문 바로가기

BackEnd/PYTHON, Django

MAKE LIKE API

반응형

/images/3/like/
0. create the url and the view

  1. take the id from the url

  2. to find and image with id

  3. to create a like for image

  4. to check a like already exist

0. create the url and the view(views.py)

1
2
3
class LikeImage(APIView) :
    def get(self, request, format=None) :
        return Response(status=200)
cs

 

1. take the id from the url (urls.py)

1
2
3
urlpatterns = [
    path('/like/', view=views.LikeImage.as_view(), name="like_image")
]
cs

 

2. to find and image with id (views.py)

1
2
3
4
5
6
7
8
class LikeImage(APIView) :
    def get(self, request, id, format=None) :
        try :
            image = models.Image.objects.get(id=id)
        except models.Image.DoesNotExist :
            return Response(status=404)
 
        return Response(status=200)
cs

 

3. to create a like for image (views.py)

1
2
3
4
5
6
7
8
9
10
11
12
13
class LikeImage(APIView) :
    def get(self, request, id, format=None) :
        try :
            get_image = models.Image.objects.get(id=id)
        except models.Image.DoesNotExist :
            return Response(status=404)
 
        new_like = models.Like.objects.create(
            creator = request.user,
            image = get_image
        )
        new_like.save()
        return Response(status=200)
cs

 

4. to check a like already exist (views.py)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class LikeImage(APIView) :
    def get(self, request, id, format=None) :
        try :
            get_image = models.Image.objects.get(id=id)
        except models.Image.DoesNotExist :
            return Response(status=status.HTTP_404_NOT_FOUND)
 
        try :
            check_like = models.Like.objects.get(
                creator = request.user,
                image = get_image
            )
            check_like.delete()
            return Response(status=status.HTTP_204_NO_CONTENT)
        except models.Like.DoesNotExist :
            new_like = models.Like.objects.create(
                creator = request.user,
                image = get_image
            )
            new_like.save()
            return Response(status=status.HTTP_201_CREATED)
cs

 

반응형

'BackEnd > PYTHON, Django' 카테고리의 다른 글

Feed API  (0) 2019.12.20
REST FRAMEWORK - API View  (0) 2019.12.10
REST FRAMEWORK - serializers  (0) 2019.12.10
REST FRAMEWORK - MAKE API  (0) 2019.12.10
Admin Panel  (0) 2019.12.09