def post(self, request, image_id, format=None): user = request.user try: found_image = models.Image.objects.get(id=image_id) except models.Image.DoesNotExist: return Response(status=status.HTTP_404_NOT_FOUND) try: preexisiting_like = models.Like.objects.get(creator=user, image=found_image) return Response(status=status.HTTP_304_NOT_MODIFIED) except models.Like.DoesNotExist: new_like = models.Like.objects.create(creator=user, image=found_image) new_like.save() notification_views.create_notification(user, found_image.creator, 'like', found_image) return Response(status=status.HTTP_201_CREATED)
def post(self, request, user_id, format=None): """request.user 가 user_id의 사용자를 팔로우한다. """ user = request.user try: user_to_follow = models.User.objects.get(id=user_id) except models.User.DoesNotExist: return Response(status=status.HTTP_404_NOT_FOUND) user_followings_set = user.followings.all() # 기존에 follow 하지 않은 사용자라면 팔로우한다. try: preexited_following = user_followings_set.get(id=user_id) return Response(status=status.HTTP_304_NOT_MODIFIED) except models.User.DoesNotExist: user.followings.add(user_to_follow) user.save() # create noti notification_views.create_notification(user, user_to_follow, 'follow') return Response(status=status.HTTP_200_OK)
def post(self, request, image_id, format=None): user = request.user try: found_image = models.Image.objects.get(id=image_id) except models.Image.DoesNotExist: return Response(status=status.HTTP_404_NOT_FOUND) serializer = serializers.CommentSerializer(data=request.data) if serializer.is_valid(): serializer.save(creator=user, image=found_image) notification_views.create_notification(user, found_image.creator, 'comment', found_image, serializer.data['message']) return Response(data=serializer.data, status=status.HTTP_201_CREATED) else: return Response(data=serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def post(self, request, image_id, format=None): # 해당 views 호출한 요청자 아이디 변수 할당 user = request.user # 요청에 같이 넘어온 request의 image_id값으로 이미지 모델의 해당 아이디에 해당하는 이미지있는지 try 있으면 try / catch 빠져나감 try: found_image = models.Image.objects.get(id=image_id) # try가 실패시 404 처리 except models.Image.DoesNotExist: return Response(status=status.HTTP_404_NOT_FOUND) # request data 를 json 형식에서 ~ python 형태로 시리얼라이즈 serializer = serializers.CommentSerializer(data=request.data) # 시리얼라이즈가 처리되었을때 db에 creator 컬럼에 요청 user아이디값 넣어주고 insert 처리 if serializer.is_valid(): serializer.save(creator=user, image=found_image) notification_views.create_notification(user, found_image.creator, 'comment', found_image, serializer.data['message']) return Response(data=serializer.data, status=status.HTTP_201_CREATED) # 실패시 400 처리 else: return Response(data=serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def post(self, request, image_id, format=None): user = request.user #login한 유저 정보 try: found_image = models.Image.objects.get(id=image_id) #여기의 image_id는 /images/2/comment 의 2에 해당 except models.Image.DoesNotExist: return Response(status=status.HTTP_404_NOT_FOUND) #{"message":"Hello"} print(request.data) serializer = serializers.CommentSerializer(data=request.data) #{"message":"Hello"}(request.data)과 같은 필드를 갖고 있는 새로운 오브젝트를 생성 if serializer.is_valid(): print('im valid') serializer.save(creator=user, image=found_image) #comment시 notification추가 notification_views.create_notification(user, found_image.creator, 'comment', found_image, serializer.data['message']) return Response(data=serializer.data, status=status.HTTP_201_CREATED) else: # {"message":"Hello"}일 경우 "creator": [ "This field is required." 에러가나오게 됨(creator가 없으므로) return Response(data=serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def post(self, request, image_id, format=None): # if something changes on the DataBase, the request should be post user = request.user try : found_image = models.Image.objects.get(id=image_id) # 필터링해서 model을 읽고자 할 때 objects 사용 except models.Image.DoesNotExist: return Response(status=status.HTTP_404_NOT_FOUND) try: models.Like.objects.get( creator = user, image = found_image ) return Response(status=status.HTTP_304_NOT_MODIFIED) except models.Like.DoesNotExist: new_like = models.Like.objects.create( creator = user, image = found_image ) new_like.save() notification_views.create_notification( user, found_image.creator, 'like', found_image) return Response(status=status.HTTP_201_CREATED)
def post(self,request, image_id, format=None): """image_id 의 image에 좋아요를 누른다""" try: found_image = models.Image.objects.get(id=image_id) except models.Image.DoesNotExist: return Response(status=status.HTTP_404_NOT_FOUND) try: # 이미 좋아요를 눌렀는지 확인 preexisted_like = models.Like.objects.get( creator=request.user, image=found_image ) return Response(status=status.HTTP_304_NOT_MODIFIED) except models.Like.DoesNotExist: # 이전에 누른 좋아요가 없다면 좋아요 생성 new_like = models.Like.objects.create( creator=request.user, image=found_image ) new_like.save() # create noti notification_views.create_notification(request.user, found_image.creator, 'like', found_image) return Response(status=status.HTTP_201_CREATED)
def post(self, request, user_id, format=None): user = request.user try: user_to_follow = models.User.objects.get(id=user_id) except models.User.DoesNotExist: return Response(status=status.HTTP_404_NOT_FOUND) user.following.add(user_to_follow) user.save() notification_views.create_notification(user, user_to_follow, 'follow') return Response(status=status.HTTP_200_OK)
def post(self, request, user_id, format=None): user = request.user # follow notification try: user_to_follow = models.User.objects.get(id=user_id) except models.User.DoesNotExist: return Response(status=status.HTTP_404_NOT_FOUND) user.following.add(user_to_follow) user.save() notification_views.create_notification(user, user_to_follow, 'follow') return Response(status=status.HTTP_200_OK)
def post(self, request, user_id, format=None): user = request.user try: user_to_follow = models.User.objects.get(id=user_id) except models.User.DoesNotExist: return Response(status=status.HTTP_404_NOT_FOUND) # ManyToMany(다대다) 관계에서 객체를 추가 user.following.add(user_to_follow) # 대상의 follower에 해당 유저 추가 user_to_follow.followers.add(user) # 팔로잉 상태창 위한 함수 notification_views.create_notification(user, user_to_follow, 'follow') return Response(status=status.HTTP_200_OK)
def post(self, request, image_id, format=None): #원래는 post하는게 맞는데 body에 뭘 넘기고 하는건 아니고 테스트하기 쉬우므로 get을 이용 #post 바디에게 메시지를 보내서 db에 생성 user = request.user #http://192.168.0.17:8000/images/18/like/ #에 억세스하면 print에 18이라는게 뜸 print(image_id) try: found_image = models.Image.objects.get(id=image_id) #get대신에 fileter혹은 all이 될 수 도있음 except models.Image.DoesNotExist: return Response(status=status.HTTP_404_NOT_FOUND) try: #http://192.168.0.17:8000/images/2/like/ #해당 모델에 라이크가 있으면 그 라이크를 삭제하고 preexsiting_like = models.Like.objects.get(creator=user, image=found_image) #preexsiting_like.delete() return Response(status=status.HTTP_304_NOT_MODIFIED) except models.Like.DoesNotExist: #http://192.168.0.17:8000/images/2/like/ #해당 모델의 라이크가 없으면 생성한다. new_like = models.Like.objects.create(creator=request.user, image=found_image) #좋아요시 notification추가 notification_views.create_notification(user, found_image.creator, 'like', found_image) new_like.save() #http://192.168.0.17:8000/images/2/like/ 에 들어가면 현재유저이름으로 좋아요 1건이 추가됨 #http://192.168.0.17:8000/admin/images/like/ 을 새로고침하면 추가되는걸 확인가능 return Response(status=status.HTTP_201_CREATED)
def post(self,request,image_id,format=None): """image_id의 이미지에 댓글을 생성한다.""" try: found_image = models.Image.objects.get(id=image_id) except models.Image.DoesNotExist: return Response(status=status.HTTP_404_NOT_FOUND) # request.data 로 {"message" : "hi"} 들어옴 serializer = serializers.CommentSerializer(data=request.data) # 파이썬 object로 serialize if serializer.is_valid(): serializer.save(creator=request.user, image=found_image) # read only필드인 creator 채우고, Comment 모델의 image 필드 채우고 저장 # create noti notification_views.create_notification( request.user, found_image.creator, 'comment', found_image, serializer.data['message']) # request.data['message']도 가능 return Response(data=serializer.data, status=status.HTTP_201_CREATED) else: return Response(data=serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def post(self, request, image_id, format=None): user = request.user try: found_image = models.Image.objects.get(id=image_id) except models.Image.DoesNotExist: return Response(status=404) try: preexisiting_like = models.Like.objects.get(creator=user, image=found_image) return Response(status=304) except models.Like.DoesNotExist: new_like = models.Like.objects.create(creator=user, image=found_image) new_like.save() return Response(status=201) notification_views.create_notification(user, found_image.creator, 'like', found_image, None) return Response(status=200)
def post(self, request, image_id, format=None): # 해당 views 호출한 요청자 아이디 변수 할당 user = request.user # 요청에 같이 넘어온 request의 image_id값으로 이미지 모델의 해당 아이디에 해당하는 이미지있는지 try 있으면 try / catch 빠져나감 try: found_image = models.Image.objects.get(id=image_id) # except처리되는 순간 밑에 있는 구문 실행 안함 except models.Image.DoesNotExist: return Response(status=status.HTTP_404_NOT_FOUND) # 위에서 try가 실행되었을때 해당 object가 검색되었으면 delete 처리 try: preexisting_like = models.Like.objects.get(creator=user, image=found_image) print("exist_like & delete - name : ", user, " / image : ", found_image) # 이전에 좋아요한 오브젝트 발견하면 수정하지않음 return Response(status=status.HTTP_304_NOT_MODIFIED) # 위에서 try가 실행되고 try가 실패했을때 save 처리 except models.Like.DoesNotExist: print(found_image) new_like = models.Like.objects.create(creator=user, image=found_image) print("new_like & save - name : ", user, " / image : ", found_image) # 이전에 좋아요 하지않음 오브젝트 발견하면 수정 new_like.save() notification_views.create_notification(user, found_image.creator, 'like', found_image) return Response(status=status.HTTP_201_CREATED)