<오늘 한 일/>
- 알고리즘 문제 풀이
- https://guco.tistory.com/307
- https://guco.tistory.com/309
- 코테 풀이 시간을 좀 줄여야 할 텐데.....
- 예시 케이스가 좀 더 다양하면...좋겠다.........
- Django 50문 50답
- DRF Q기능을 통해서 쿼리하는 것은 어떤 장점이 있습니까?
- AND, OR, NOR 연산자를 쉽게 사용할 수 있어서 다양한 조건을 한 번에 걸어야 하는 경우에 Q 객체를 사용할 수 있습니다.
- 또한, Q 객체를 사용하면 조건을 직관적으로 나열할 수 있어서 코드 가독성이 향상됩니다.
- Serializer에서 어떻게 객체를 validate하게 됩니까?
- 우선, 시리얼라이저 클래스 생성 시 serializers.ModelSerializer를 상속받아 사용하면 모델에서 정의한 필드 제약 조건을 시리얼라이저에서 자동 검증합니다.
- 추가적으로 필드를 검증하고 싶다면 시리얼라이저 클래스에 검증할 필드를 정의하면서 max_length, min_length, allow_blank 등의 검증 옵션을 설정하면 됩니다. 다만, 이때 설정한 옵션이 모델에서 정의한 옵션에 위배된다면 시리얼라이저 is_valid() 메서드를 통과하더라도 DB에 객체가 저장될 때 에러가 날 수 있습니다.
- 검증 옵션 외에 다른 커스텀 검증이 필요하다면 필드를 정의한 후, validate_<필드명> 메서드를 작성할 수 있고, 전체 객체에 대한 검증이 필요하다면 validate 메서드를 오버라이드 해서 검증 로직을 구현할 수 있습니다.
- Serializer에서 Custom Validation을 하는 이유는 무엇입니까?
- 개별 필드에 대한 복잡한 검증이 필요할 때(비밀번호 유효성 검사, 시작/종료 날짜가 있는 경우 등)나 전체 객체에 대한 검증이 필요할 때 사용합니다.
- 또한 커스텀 유효성 검사를 하면 클라이언트에게 명확한 에러 메시지를 보내서, 클라이언트는 적절한 대응을 취할 수 있고 사용자 경험을 개선할 수 있습니다.
- Serializer에서 create, update 함수는 어떤 기능을 수행합니까?
- create 함수: 이 함수는 새로운 객체를 생성하기 위한 로직을 구현합니다. 클라이언트로부터 전달받은 검증된 데이터를 사용하여 데이터베이스에 새로운 객체를 추가합니다. 기본 구현에서는 시리얼라이저에 정의된 모델을 사용하여 객체를 생성합니다. 필요한 경우, 커스텀 로직이나 추가적인 처리를 create 함수에서 구현할 수 있습니다.
- update 함수: 이 함수는 기존 객체를 수정하기 위한 로직을 구현합니다. 클라이언트로부터 전달받은 검증된 데이터를 사용하여 데이터베이스에 저장된 기존 객체의 속성을 업데이트합니다. 기본 구현에서는 시리얼라이저에 정의된 모델을 사용하여 객체를 수정합니다. 필요한 경우, 커스텀 로직이나 추가적인 처리를 update 함수에서 구현할 수 있습니다.
- Serailizer Custom validate함수를 통해 오류 케이스를 어떻게 처리합니까?
- 커스텀 유효성 검사는 2가지 방법이 있는데, 하나는 단일 필드에 대한 유효성 검사고, 다른 하나는 다중 필드 또는 전체 객체에 대한 유효성 검사입니다.
- 단일 필드의 경우 validate_<필드명> 메서드를 작성함으로써 구현할 수 있고, 다중 필드 또는 전체 객체에 대한 경우는 validate 메서드를 오버라이딩 하여 원하는 로직을 작성하면 됩니다.
- 이때 각 유효성 검사 메서드에서 유효성 검사를 통과하지 못 하면 serializers.ValidationError를 발생시키는데, if 조건 raise serializers.ValidationError("에러메시지") return value(or data) 이런 식으로 각 오류에 맞는 에러 메시지를 작성할 수 있습니다.
<느낀 점/>
- 느낀 점...........난 코테를 못 한다 흑
- 아직 멀었구...나......싶다
- 코테 하루에 3문제씩 막 풀고 싶다 얼른 2단계로 넘어가야 할 텐데....후....
<내일 목표/>
- 알고리즘 문제 풀이
- Django 50문 50답 채우기
- 기업 3군데 지원