수학과의 좌충우돌 프로그래밍

[Django] format 과 Renderer 본문

웹프로그래밍/DRF

[Django] format 과 Renderer

ssung.k 2019. 12. 29. 17:52

restframework.response.Response 에서는 2가지 타입의 응답을 할 수 있습니다.

  • json

    다른 일반적인 경우 json 타입으로 응답하게 됩니다.

    {
      "post":"http://127.0.0.1:8000/post/"
    }
    
  • api

    DRF은 브라우저를 통해 접근이 가능하며 이 경우 api 타입으로 응답하게 됩니다. 이 api 타입이 html로서 우리가 브라우저에서 보게 되는 아래의 이미지입니다.

 

출력 포맷을 결정하는 방법은 3가지가 있습니다.

각 방식에 대해 json 타입의 요청과 api 타입의 요청하는 방법은 다음과 같습니다.

  • Accept 헤더

    localhost:8000/ Accept:application/json
    localhost:8000/ Accept:text/html
    
  • GET 인자 format

    localhost:8000/?format=json
    http://localhost:8000/?format=api
    
  • URL 끝에 '.{포맷방식}'

    http://localhost:8000/.json
    http://localhost:8000/.api
    

     

Renderer

DRF 은 두 가지 Renderer를 디폴트로 제공하고 있습니다. 이는 아래와 같습니다.

  • JsonRenderer

    • json.dumps 를 통한 json 직렬화
    • format 이 json 일 경우
  • BrowsableAPIRenderer

    • html 을 통한 랜더링
    • format 이 api 일 경우

https://www.django-rest-framework.org/api-guide/renderers/

 

Renderers - Django REST framework

 

www.django-rest-framework.org

이 외의 추가적인 Renderer 들은 위 공식문서를 통해서 확인할 수 있습니다.

Renderer를 바꾸기 위해서는, 혹은 새로운 Renderer를 추가하기 위해서는 settings 에서 이를 추가해주어야 합니다.

기본적으로 제공되는 두 개의 Renderer를 포함하여 추가적인 Renderer 를 기재하면 됩니다.

# settings.py

REST_FRAMEWORK = {
    'DEFAULT_RENDERER_CLASSES': [
        'rest_framework.renderers.JSONRenderer',
        'rest_framework.renderers.BrowsableAPIRenderer',
      	# 추가적인 renderer
    ]
}

 

 

Comments