본문 바로가기

BackEnd/Django

[Django]User Profile 수정하기

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