ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TIL 2023.05.01
    내일배움캠프 2023. 5. 1. 20:26

    장고 심화 개인과제가 끝이 났다.

    과제 해설 중 새롭게 알게된 것들에 대해 정리해보자.

     

    class TodoListView(APIView):
        def get(self, request):
            todo_list = Todo.objects.all()
            serializer = TodoListSerializer(todo_list, many=True)
            return Response(serializer.data, status=status.HTTP_200_OK)
    
    
    class TodoDetailView(APIView):
        def get(self, request, todo_id):
            todo = get_object_or_404(Todo, id=todo_id)
            serializer = TodoListSerializer(todo)
            return Response(serializer.data, status=status.HTTP_200_OK)

    여태까진 위 코드처럼 전체 목록을 불러오는 뷰와 상세 정보를 불러오는 뷰를 따로 만들었었는데,

    class TodoView(APIView):
        def get(self, request, todo_id=None):
            if todo_id:
                todo = get_object_or_404(Todo, id=todo_id)
                serializer = TodoListSerializer(todo)
            else:
                todo_list = Todo.objects.all()
                serializer = TodoListSerializer(todo_list, many=True)
            return Response(serializer.data, status=status.HTTP_200_OK)

    위 코드처럼 pk 값을 인자로 받는데 기본값을 None으로 두고, 값이 있다면 상세정보, 없다면 전체 리스트를 불러오게 할 수 있다.

     

     

    serializer.is_valid(raise_exception=True)

    이 문법을 쓰면 굳이 조건문 쓰지 않고도 밸리데이션 실패하면 바로 끝낼 수 있다.

     

     

    class UserSerializer(serializers.ModelSerializer):
        class Meta:
            model = User
            fields = '__all__'
            extra_kwargs = {
                "password": {
                    "write_only": True
                },
            }

    read_only 혹은 write_only 를 지정해줄 수 있다. 위 코드처럼 비밀번호를 write_only로 지정하면 쓸 때는 값이 필요하지만, 읽을 때는 가져오지 않게 할 수 있다.

     

     

        def delete(self, request):
            user = request.user
            user.is_active = False
            user.save()
            return Response(status=status.HTTP_204_NO_CONTENT)

    나는 회원 탈퇴 기능을 유저를 데이터베이스에서 삭제시켰는데, 보통 그렇게 하지 않고,

    is_active 를 False로 해서 로그인만 못하게 만든다고 한다.

    '내일배움캠프' 카테고리의 다른 글

    TIL 2023.05.03  (0) 2023.05.03
    TIL 2023.05.02  (2) 2023.05.02
    WIL 내일배움캠프 7주차  (0) 2023.04.28
    TIL 2023.04.28  (0) 2023.04.28
    TIL 2023.04.27  (0) 2023.04.27
Designed by Tistory.