본문 바로가기
관리자

분류 전체보기

(963)
[TIL] 파이썬 리턴타입 힌트로 속성 탐색, unittest.mock의 @patch 파이썬 리턴타입 힌트로 속성 탐색 아래와 같이 리턴 타입(Snapshot)을 지정하면, 해당 get_snapshot() 메서드를 불러와서 리턴타입으로 사용할 때 속성 탐색이 가능해진다.(아래 사진) def get_snapshot(self) -> Snapshot: return self.context.get("view").get_snapshot() unittest.mock의 @patch unittest.mock의 @patch로 특정 {패키지…메서드}를 무시하고 리턴값을 지정할 수 있다. @patch( "utils.api_processor.start_process", return_value=[200, ""] ) 위 코드는 utils.api_processor 패키지의 start_process 메서드의 실행을 무..
[TIL] get_serializer()와 serializer.save()의 instance, get_object_or_404 get_serializer()와 serializer.save()의 instance get_serializer() 에 들어가는 instance는 serializer의 update() 메서드를 불러오고 updata할 대상을 가리키게 된다. serializer.save()로 넘기는 정보는 클라이언트에서 넘어온 정보가 아니라 서버 측에서 추가로 넘기는 정보이다. 따라서 get_serializer()로 넘기는 정보는 검증 과정을 거쳐서(검증 메서드 통과 후) validated_data에 들어가지만, save()에 넘기는 추가 인자들은 클라이언트에서 넘어온 정보가 아니므로 검증을 거치지 않는다. 다만 똑같이 validated_data에 추가된다. 검증을 거치지 않은 추가적인 정보도 validated_data에 포함..
[비공개] Weekly Report - 22/09/05~22/09/11, 806일차 보호되어 있는 글입니다.
[작성중]Django REST framework 공식문서: 3. Serializer - ModelSerializer ModelSerializer modelSerializer는 Model에서 정의한 각 필드를 자동으로 추가해준다. Serializer 사용시 : 필드를 하나씩 정의 class CommentSerializer(serializers.Serializer): user = UserSerializer(required=False) edits = EditItemSerializer(many=True) # A nested list of 'edit' items. content = serializers.CharField(max_length=200) created = serializers.DateTimeField() ModelSerializer 사용 시 : 각 필드를 정의하는 내용을 Model(Comment)에서 정의한 것과 똑..
[비공개] Weekly Report - 22/08/29~22/09/04, 799일차 보호되어 있는 글입니다.
Django REST framework 공식문서: 2. Serializer - Validation과 Data 접근 DRF 공식문서 스터디 기록. 일반적이고 기본적인 내용은 생략하고, 새롭게 배운 내용과 실무에서 쓰일만한 내용 위주로 공부한다. DRF 공식문서의 API Guide 부분을 참고했다. https://www.django-rest-framework.org/ 1. Validation Validation에 대한 자세한 내용은 다음에 Validator 내용을 작성하는 곳에서 다룰 예정이다. 여기서는 Serializer를 사용할 때 필수적으로 알아야할 Validation의 기본적인 사항에 대해서만 공부한다. validated_data에 접근하거나, 어떤 instance를 save하기 전에 반드시 is_valid()를 호출해야 한다. 즉 아래와 같은 방식으로 사용해야한다. serializer = CommentSeria..
[비공개] Weekly Report - 22/08/22~22/08/28, 792일차 보호되어 있는 글입니다.
[TIL] django 테스트 - subTest 활용하기, 인스턴스 field update 하기 subTest 활용하기 테스트 시에 subTest를 활용하면 논리적으로 구분되어 읽기 좋고, 어떤 부분에서 에러가 났는지 명확히 알 수 있다. 나는 아래와 같이 논리적 구분을 위해 사용했다. def test_update(self): ###...중략 ### django model bakery로 초기 데이터(fixture) 생성 # then with self.subTest("200 정상 확인"): self.assertEqual( response.status_code, status.HTTP_200_OK, ) with self.subTest( "입력값으로 받은 name이 post에 업데이트 된다" ): post.refresh_from_db() post2.refresh_from_db() self.assertIsN..