class UserProfile(APIView):
def get_user(self, username):
try :
found_user = models.User.objects.get(username=username)
return found_user
except models.User.DoesNotExist:
return None
def put(self, request, username, format=None):
user = request.user
found_user = self.get_user(username)
if found_user is None:
return Response(status=status.HTTP_404_NOT_FOUND)
elif found_user.username != user.username:
return Response(status=status.HTTP_400_BAD_REQUEST)
else:
serializer = serializers.UserProfileSerializer(
found_user, data=request.data, partial=True)
if serializer.is_valid():
serializer.save()
return Response(data=serializer.data, status=status.HTTP_200_OK)
else:
return Response(data=serializer.errors, status=status.HTTP_400_BAD_REQUEST)
기존의 UserProfile에서
put을 추가했음 ㅇㅇ
먼저 url == objects의 내용물이 동일한것 찾구
못 찾으면 에러
찾았는데 현재 접속자랑 url에 유저랑 다르면 400!
둘다 아니면
옳다고 보고
시리얼라이징함
각각 수정할 수 있게 partial=True 해주었고
class UserProfileSerializer(serializers.ModelSerializer):
images = images_serializers.CountImageSerializer(many=True)
post_count = serializers.ReadOnlyField()
followers_count = serializers.ReadOnlyField()
following_count = serializers.ReadOnlyField()
class Meta:
model = models.User
fields = (
'profile_image',
'username',
'name',
'bio',
'website',
'post_count',
'followers_count',
'following_count',
'images'
)
시리얼라이저에서 눈여겨 볼껀
ReadOnlyField()임
이 친구들은 수정하거나 하지 않으니까!!
왜냐면 우리가 만든게 아님( 갯수만 세어주는 필드)
'BackEnd > Django' 카테고리의 다른 글
[Webpack]Setting (0) | 2018.11.10 |
---|---|
[Django] User password Change (0) | 2018.11.08 |
[Django] 이미지 삭제하기 (0) | 2018.11.08 |
[Django] 이미지 수정하기! (0) | 2018.11.07 |
[Django] 좋아요 리스트 보기 (0) | 2018.11.07 |