Programming-[Backend] (421) 썸네일형 리스트형 [작성중]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)에서 정의한 것과 똑.. 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.. [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.. Django REST framework 공식문서: 1. Serializer - view와 serializer관계, 전달 정보 : Data, create/update, save DRF 공식문서 스터디 기록. 일반적이고 기본적인 내용은 생략하고, 새롭게 배운 내용과 실무에서 쓰일만한 내용 위주로 공부한다. DRF 공식문서의 API Guide 부분을 참고했다. https://www.django-rest-framework.org/ Serializer의 역할 Serialize를 한다는 것은 일반적으로는 특정 언어에서 사용하는 객체를 바이트 또는 스트림으로 변환한다는 것이다. Django 에서는 Django가 다룰 수 있는 객체를 외부에서 받는 JSON 등의 데이터 형태로 변환한다는 것을 의미한다. Deserialize는 그와 반대 개념이다. 요청 JSON 등의 데이터 -> Deserialize -> Django 객체(DB 저장)-> Serialize -> 응답 JSON 등의 데이터 .. [TIL] Django soft delete cascade (SafeDeleteModel), deleted null 아닌 항목만 찾기 soft Delete 연관관계가 있는 모델끼리는 SafeDeleteModel을 상속받고, Cascade 옵션이 적용되어 있다면 soft delete도 cascade 된다.SafeDeleteModel의 soft_delete_cascade_policy_action() 메서드를 사용하는 경우 적용된다. Post : RelatePost = 1 : N인 관계가 있고, RelatePost에서 post를 FK로 갖고 있을 때, 아래와 같이 SafeDeleteModel을 상속받고 FK로 CASCADE 옵션이 지정된 상황이라고 가정한다. class RelatePost(SafeDeleteModel): post = ForeignKey( Post, on_delete=CASCADE, related_name="relate_pos.. [TIL] Django bulk_update 방법과 주의사항 Django bulk update는 인자값으로 fields를 주어야한다. 모델의 어떤 필드를 업데이트할 것인지 직접 지정해줘야하는 것이다. 아래 코드에서 some_models =[] 에는 필드값이 업데이트된 Some_Model의 QuerySet 객체가 들어있다고 보면 된다. Some_Model.objects.bulk_update( some_models, batch_size=3000, fields=["status", "result"], ) 자바-스프링 계열은 JPA가 dirty checking을 알아서 해줬었는데.. 아쉽다 ㅠㅠ bulk_create, bulk_insert 시 주의할점 serializer에서 제공하는 validate가 먹히지 않을 수 있기 때문에 def validate_xxx 로 입력값에 .. OpenAPI 명세, Swagger 기본 개념 : Django restframework, drf-spectacular로 swagger split OpenAPI 명세 개념 개요 여기서 말하는 것은 Open API가 아니라 붙여쓰는 OpenAPI이다. 참조 1에 따르면 Open API는 말 그대로 개방된 API로 날씨, 주소 정보 등 공개된 API를 의미한다. OpenAPI는 Restful API의 명세(Spec)를 규칙에 맞게 json이나 yaml로 표현하는 방식을 말한다. https://jojoldu.tistory.com/31 규칙: JSON, YAML로 표현 규칙에 맞게라고 했는데, 어떤 규칙을 가질까? 우선 json과 yaml 파일 형식에 대한 것은 대부분의 개발자가 알고 있으리라 생각된다. 그냥 어떤 정보를 표현하는 양식이라고 생각하면 된다. 아래 그림을 참고하자. 참조 2.https://levelup.gitconnected.com/yaml.. 파이썬 중급 - 10. 멀티 스크래핑 실습 : asyncio, beautifulsoup 목적 멀티 스크래핑 실습을 통해서 비동기 I/O Coroutine 작업을 연습해본다. Blocking I/O : 호출된 함수가 자신의 작업이 완료될 때까지 제어권을 갖고 있음. 타 함수는 대기 Non Blocking I/O : 호출된 함수(서브루틴)가 yield후 호출한 함수(메인 루틴)에 제어권을 전달. 타 함수 작업 진행 asyncio는 Non Blocking I/O를 편하게 구현할 수 있는 라이브러리다. 여기서 주의할 점은 해당 라이브러리를 사용하더라도 내가 작성한(사용하는) 함수가 Blocking 형태로 코딩이 되있다면 asyncio를 사용하는 의미가 없어진다. 설치 파이썬 프로젝트를 하나 만들고, asyncio와 beautifulsoup4를 설치한다. pip install asyncio pip .. 이전 1 ··· 18 19 20 21 22 23 24 ··· 53 다음