DRF docs API Guide Responses

2024. 1. 12. 00:57· Django/restframework
목차
  1. Responses
  2. Creating responses
  3. Response()
  4. Attributes
  5. Standard HttpResponse attributes
  6. .render()
728x90

Responses

기본 HttpResponse와 달리 TemplateResponse 개체는 뷰에서 제공한 context를 계산합니다.
마지막 출력 까지 response는 필요하지 않다면 계산되지 않습니다
- Django documentation -

REST framework는 클라이언트 요청에 따라 여러 콘텐츠 유형으로 랜더링 할 수 있게 HTTP content를 지원합니다. 그래서 다양한 content types로 랜더링 가능합니다.
Response class는 Django의 SimpleTemplateResponse 의 subclass 입니다. Response objects는 native Python primitives로 데이터로 초기화 합니다. 그런 다음 REST framework는 표준 HTTP content를 사용해서 최종 응답 contnet를 render할 방법을 결정합니다.
Response 클래스를 꼭 사용할 필요는 없으며, 필요한 경우 일반적인 HttpResponse 나 StreamingHttpResponse objects를 view에 사용 가능합니다. Response class를 사용한다면 다양한 foramts로 render 할 수 있고 좋은 interface를 제공 할 수 있습니다.

어떤 이유로 REST framework를 어렵게 customize 하지 않는 다면 Response objects를 반환하는 APIView class나 @api_view function을 뷰에 사용하기를 권장 합니다. 이렇게 한다면 뷰가 반환되기 전에 response에 적합한 내용을 반환할 것을 보장합니다.


Creating responses

Response()

Signature: Response(data, status=None, template_name=None, headers=None, content_type=None)
일반적인 HttpResponse 객체와 달리 랜더링된 내용으로 Response객체를 인스턴스화 하지 않습니다.대신에 임의의 초기 Python으로 구성될 수 있는 랜더링 되지 않은 데이터를 전달합니다.

Response클래스에 사용된 이 랜더링은 Django model instance와 같이 복잡한 데이터 타입을 기본적으로 처리 할 수 없습니다. 그래서 Response를 만들기 전에 기본 데이터 형식으로 serialize 해야합니다.

REST framework의 Serializerclasses를 상용해서 직렬화 하거나 사용자 정의 직렬화를 진행 할 수 있습니다.


Arguments:

  • data: response에 대해 직렬화된 데이터
  • status: response의 status code. default는 200 입니다.
  • template_name: HTMLRenderer을 선택했을 시 template name에 사용됩니다.
  • headers: response에 사용할 HTTP 헤더 dict
  • content_type: response의 응답 유형입니다. 일반적으로 renderer에 의해 자동으로 생성되지만 내용 유형을 명시적으로 지정해야 하는 경우 사용 할 수 있습니다.
  •  

Attributes

.data

response에 랜더링 되지 않은 일련화된 데이터

.status_code

HTTP 응답의 숫자 상태 코드

.content

response의 render된 내용입니다. render() 메서드가 호출되어야 .content에 엑세스 가능합니다.

.template_name

template_name이 제공된 경우. HTML Renderer 또는 다른 사용자 지정 템플릿 rendere가 허용했을 경우만 필요합니다.

.accepted_render

response를 render하기 위해 사용할 renderer instance 입니다
APIView나 @api_view이 자동적으로 view에서 response 직전에 설정합니다.

.renderer_context

.render() method로 renderer에 추가적인 context information이 담긴 dict입니다
accepted_render와 똑같이 view에서 reponse 직전에 자동으로 설정합니다.


Standard HttpResponse attributes

Response class는 SimpleTemplateResponse을 확장하며, response에 모든 일반적인 특성과 메서드를 사용할 수 있습니다. 예를 들어 다음과 같은 표준 방법으로 response에 headers를 설정 할 수 있습니다.

response = response()
response['Cache-Control'] = 'no-cache'

.render()

Signature: .render()
다른 TemplateResponse과 마찬가지로 이 method는 response의 serialized 된 data를 최종 response content로 render하기 위해 호출됩니다. .render()이 호출되었을 때, response content는 accepted_rendererinstance 인스턴스에서 .render(data, accepted_media_type, renderer_context method를 호출한 결과로 설정됩니다.
일반적으로 Django's standard response cycle에 의해 처리되기 때문에 직접 .render()을 호출 할 필요는 없습니다.

저작자표시 비영리 (새창열림)

'Django > restframework' 카테고리의 다른 글

Generic views  (0) 2024.01.18
DRF docs API Guide Class-based Views  (1) 2024.01.15
DRF docs API Guide Request  (0) 2024.01.09
DRF tutorial - 3 Class-based Views  (0) 2024.01.02
DRF tutorial -2 requests and responses  (0) 2024.01.02
  1. Responses
  2. Creating responses
  3. Response()
  4. Attributes
  5. Standard HttpResponse attributes
  6. .render()
'Django/restframework' 카테고리의 다른 글
  • Generic views
  • DRF docs API Guide Class-based Views
  • DRF docs API Guide Request
  • DRF tutorial - 3 Class-based Views
두잇 두두
두잇 두두
읽기 쉬운 코드를 짜기 위해 노력합니다. 좋은 코드는 단순하고 이해하기 쉬워야 한다고 생각합니다.
두잇 두두
두두 DB
두잇 두두
전체
오늘
어제
  • 분류 전체보기 (135)
    • CS지식 (7)
    • 시스템 설계 (5)
    • 자료구조&알고리즘 (36)
      • 자료구조 (1)
      • 백준 (13)
      • 프로그래머스 (15)
      • 인프런 (2)
    • Python (9)
      • Docs (3)
      • 실험실 (2)
    • Django (36)
      • orm (10)
      • view (3)
      • model (3)
      • admin (3)
      • restframework (13)
      • error (1)
      • utils (2)
    • Java (2)
      • JPA (3)
    • AI (1)
      • AI가 쓴 글 (1)
    • Git (4)
    • Linux (1)
    • 개발자로써 (8)
      • 회고 (1)
    • 문화생활 (0)
      • 여행 (0)
    • 도서📚 (0)
      • 일반 도서 (0)
      • 개발 도서 (0)
    • 프론트 (1)
      • snippet (1)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
두잇 두두
DRF docs API Guide Responses
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.