ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Django] user api (get, put) 만들기
    파이썬/Django 2023. 1. 17. 16:35
    728x90
    반응형

    api 만들기

    [GET, PUT] /users/me : 

    사용자가 자신의 개인정보를 확인하고 수정할 수 있는 api

    1. urls.py 파일에 url 연결하기

    • config path와 연결하기
    from django.urls import path
    from . import views
    
    urlpatterns = [
        path("me", views.Me.as_view()),
    ]

    위처럼 users 폴더의 views 파일을 가져와서 path에 연결한다.

    views.py의  Me 라는 클래스를 연결해줌

     

    2. views.py 파일 설정하기

    from rest_framework.response import Response
    from rest_framework.views import APIView
    from rest_framework import status
    from rest_framework.permissions import IsAuthenticated
    from . import serializers

    status : http status에 관한 작업을 위한 코드

     

    • [GET] /users/me
    class Me(APIView):
    
        permission_classes = [IsAuthenticated]
    
        def get(self, request):
            user = request.user
            serializer = serializers.PrivateUserSerializer(user)
            return Response(serializer.data)

    PrivateUserSerializser를 이용해 user데이터 번역후 리턴한다.

     

    • [PUT] /users/me
    class Me(APIView):
        def put(self, request):
        	user = request.user
            serializer = serializers.PrivateUserSerializer(
                user,
                data=request.data,
                partial=True,
            )
            if serializer.is_valid():
                user = serializer.save()
                serializer = serializers.PrivateUserSerializer(user)
                return Response(serializer.data)
            else:
                return Response(serializer.errors)

     

    3. serializers.py에 user/me에 보여줄 정보 설정

    class PrivateUserSerializer(ModelSerializer):
        class Meta:
            model = User
            exclude = (
                "password",
                "is_superuser",
                "id",
                "is_staff",
                "is_active",
                "first_name",
                "last_name",
                "groups",
                "user_permissions",
            )

     

    LIST
Designed by Tistory.