본문 바로가기

전체 글232

9-1. Serializers Serializers serializer의 유용성을 확장하는 것은 우리가 다루고 싶은 것입니다. 그러나 사소한 문제는 아니며 심각한 디자인 작업이 필요합니다. Serializers를 사용하면 쿼리 셋 및 모델 인스턴스와 같은 복잡한 데이터를 JSON, XML 또는 기타 콘텐츠 유형으로 쉽게 렌더링 할 수 있는 네이티브한 파이썬 데이터 타입으로 변환할 수 있습니다. Serializer는 또한 deserialization을 제공하여 들어오는 데이터를 먼저 확인한 후 구문 분석 된 데이터를 복잡한 형식으로 다시 변환할 수 있습니다. DRF의 serializer는 Django의 Form 및 ModelForm 클래스와 매우 유사하게 작동합니다. 응답 출력을 제어하는 강력하고 일반적인 방법을 제공하는 Seriali.. 2021. 7. 15.
8. Renderers Renderers TemplateResponse 인스턴스를 클라이언트로 반환하려면 먼저 인스턴스를 렌더링해야 합니다. 렌더링 프로세스는 템플릿과 컨텍스트를 중간으로 표현하여 클라이언트에 제공할 수 있는 최종 byte stream으로 변환합니다. REST 프레임워크에는 다양한 media types으로 응답을 반환할 수 있는 여러 기본 렌더러 클래스가 포함되어 있습니다. 또한 고유한 사용자 정의 렌더러를 정의할 수 있으므로 고유한 media type을 유연하게 설계할 수 있습니다. 렌더러 결정 방법 view에 대한 유효한 렌더러 집합은 항상 클래스 목록으로 정의됩니다. view를 입력하려면 DRF가 들어오는 요청에 대해 콘텐츠 협상을 수행하고 요청을 충족하는 가장 적합한 렌더러를 결정합니다. 컨텐츠 협상의 .. 2021. 7. 7.
7. Parsers Parser 시스템 상호 작용 웹 서비스는 단순한 형식보다 복잡한 데이터를 전송하기 때문에 form-encoded보다 더 구조화된 form을 사용합니다. REST 프레임워크에는 다양한 미디어 유형의 요청을 수락할 수 있는 기본 파서 클래스가 다수 포함되어 있습니다. 또한 사용자 정의 구문 분석기를 정의할 수 있어 API에서 허용하는 media types를 유연하게 설계할 수 있습니다. parser 결정하는 방법 view에 유효한 parser 셋은 항상 클래스 목록으로 정의됩니다. request.data에 액세스하면 DRF는 들어오는 요청의 Content-Type 헤더를 검사하고 요청내용을 파싱할 파서를 결정합니다. 참고 : 클라이언트 응용 프로그램을 개발할 때는 HTTP request로 데이터를 전송할 .. 2021. 6. 29.
6. Routers Routers 리소스 라우팅을 사용하면 지정된 리소스 저장 컨트롤러에 대한 모든 공통 경로를 신속하게 선언할 수 있습니다. 인덱스에 대해 별도의 경로를 선언하는 대신, 한줄의 코드로 이를 선언합니다. Rails와 같은 일부 웹 프레임워크는 수신 요청을 처리하는 로직에 응용 프로그램의 URL을 매핑하는 방법을 자동으로 결정하는 기능을 제공합니다. REST 프레임워크는 Django에 대한 자동 URL 라우팅 지원을 추가하며, view 로직을 URL 집합에 연결하는 간단하고 빠르고 일관된 방법을 제공합니다. Usage router를 사용하는 간단한 예제를 보겠습니다. from rest_framework import routers router = routers.SimpleRouter() router.regist.. 2021. 6. 28.
5. ViewSets 라우팅이 요청에 사용할 컨트롤러를 결정하면, 컨트롤러는 요청을 이해하고 적절한 출력을 생성할 책임이 있습니다. DRF를 사용하면 VeiwSet라고 하는 단일 클래스의 연관된 viewset에 대한 논리를 결합할 수 있습니다. 다른 프레임워크에서는 개념적으로 유사한 것으로는 'Resources' 또는 'Controllers'를 찾을 수도 있습니다. ViewSet 클래스는 단순히 .get() 또는 .post()와 같은 메서드 핸들러를 제공하지 않고 .list() 및 .create()과 같은 작업을 제공하는 클래스 기반 View의 한 유형입니다. ViewSet의 메서드 핸들러는 as_view() 메서드를 사용하여 View를 완료하는 시점에만 해당 작업에 바인딩 됩니다. 일반적으로, urlconf의 viewSet.. 2021. 6. 26.
4-2 Generic Views (Mixin,Concrete) Mixins mixin 클래스는 기본 view 동작을 제공하는 데 사용되는 작업을 제공합니다. 클래스의 Mixin은 .get() 및 .post()와 같은 핸들러 메서드를 직접 정의하는 대신 action 메서드를 제공합니다. 이것은 행동을 보다 유연하게 구성할 수 있게 해줍니다. minxin클래스는 rest_framework.mixins에서 import할 수 있습니다. ListModelMixin 쿼리셋을 list로 구현해주는 .list(request, *args, **kwargs)메서드를 제공합니다. 쿼리셋이 채워지면 쿼리셋의 serializer된 표현을 body의 response로 200 OK response를 반환합니다. response 데이터는 선택적으로 페이징될 수 있습니다. CreateModelM.. 2021. 6. 23.
4-1. Generic Views (GenericAPIView) Save and deletion hooks: django의 일반적인 views는 일반적인 사용패턴의 shortcut으로 개발되었습니다. view 개발에서 발견되는 특정 공통 idioms와 패턴을 추출하여 사용자가 반복할 필요없이 데이터의 공통된 view를 빠르게 작성할 수 있도록 합니다. CBV(Class Based views)의 주요 장점중 하나는 재사용 가능한 동작의 일부를 구성할 수 있는 방법입니다. DRF는 일반적으로 사용되는 패턴을 제공하는 여러개의 미리 작성된 views를 제공하여 이를 활용할 수 있습니다. DRF에서 제공하는 일반적인 views를 사용하면 데이터베이스 모델에 가깝게 매핑되는 API View를 빠르게 작성할 수 있습니다. 일반적인 view가 API의 요구 사항에 맞지 않는 경우.. 2021. 6. 7.
3. DRF-Views CBV(Class-based Views) Django에서 CBV기반의 View는 오래된 스타일을 벗어난 좋은 출발입니다. - Reinout van Rees DRF에서 Django의 View 클래스를 Subclass인 APIView 클래스를 제공합니다. APIView 클래스는 다음과 같은 방법으로 일반적인 View 클래스와는 다릅니다. 핸들러 메서드에 전달된 Request Django의 HttpRequest 인스턴스가 아니라 DRF의 Request 인스턴스가 됩니다. 핸들러 메서드는 Django의 HttpResponse 대신 DRF의 Response를 반환할 수 있습니다. View는 콘텐츠 협상을 관리하고 Response에 대한 올바른 렌더러를 설정합니다. APIException는 예외가 발생될 때 적절한.. 2021. 6. 6.
이더리움 플랫폼 개념 이더리움이란 비탈릭이 비트코인의 스크립보다 더 세련된 언어를 구사하려고 새로운 블록체인 네트워크를 만들어 여러가지 분산 어플리케이션을 이용할 수 있는 플랫폼을 만들기로 하였는데 이것이 이더리움 플랫폼 입니다. 따라서, 비트코인이 전자계산기라면 이더리움 플랫폼은 하나의 거대한 컴퓨터 또는 최신 스마트폰인 셈이고 그 안에서 전자계산기(화폐) 기능만 실행하려는 것이 아니라 여러 어플리케이션들(금융, 신원관리, SNS, 의료, 예술, 정부행정, 보험 등)을 실행하려 한다는 것입니다. 또한 비트코인이 튜링불완전한 스크립트를 사용했다면, 이더리움은 튜링 완전한 언어인 Solidity(JAVA script)와 Serpent(Python)을 사용합니다. 이것이 복잡한 다중계약인 Smart Contract를 가능하.. 2021. 6. 6.