Django REST Framework - Settings

on under django
10 minute read

Django REST Framework - Settings


“Namespaces are one honking great idea - let’s do more of those!”

“네임 스페이스는 훌륭한 아이디어를 제공합니다. let’s do more of those!”

— The Zen of Python


Settings

REST 프레임워크의 모든 설정은 REST_FRAMEWORK라는 단일 Django 설정에 네임 스페이스를 설정합니다.
예를 들어 프로젝트의 settings.py파일에는 다음과 같은 내용이 포함될 수 있습니다.

REST_FRAMEWORK = {
    'DEFAULT_RENDERER_CLASSES': (
        'rest_framework.renderers.JSONRenderer',
    ),
    'DEFAULT_PARSER_CLASSES': (
        'rest_framework.parsers.JSONParser',
    )
}

Accessing settings

프로젝트에서 REST 프레임워크의 API 설정값에 액서스해야하는 경우 api_settings객체를 사용해야합니다. 예를 들면.

from rest_framework.settings import api_settings

print api_settings.DEFAULT_AUTHENTICATION_CLASSES

api_settings객체는 사용자가 정의한 설정을 확인하고 그렇지 않으면 기본값을 fall back합니다. 클래스를 참조하기 위해 string import path를 사용하여 모든 설정은 문자열 리터럴 대신 참조 된 클래스를 자동으로 가져오고 반환합니다.


API Reference

API policy settings

다음 설정은 기본 API 정책을 제어하며 모든 APIView CBV 또는 @api_view FBV에 적용됩니다.

DEFAULT_RENDERER_CLASSES

Response 객체를 반환할 때 사용할 수 있는 renderer의 기본 set을 결정하는 rederer 클래스의 list 또는 tuple입니다.

Default:

(
    'rest_framework.renderers.JSONRenderer',
    'rest_framework.renderers.BrowsableAPIRenderer',
)

DEFAULT_PARSER_CLASSES

request.data속성에 액서스 할 때 사용되는 parser의 기본 set을 결정하는 parser 클래스의 list 또는 tuple입니다.

Default:

(
    'rest_framework.parsers.JSONParser',
    'rest_framework.parsers.FormParser',
    'rest_framework.parsers.MultiPartParser'
)

DEFAULT_AUTHENTICATION_CLASSES

request.user 또는 request.auth등록 정보에 액서스할 때 사용되는 인증자의 기본 set을 판별하는 authentication 클래스의 list 또는 tuple입니다.

Default:

(
    'rest_framework.authentication.SessionAuthentication',
    'rest_framework.authentication.BasicAuthentication'
)

DEFAULT_PERMISSION_CLASSES

view의 시작에 체크 된 권한의 기본 set을 결정하는 permission 클래스의 list 또는 tuple입니다. permission은 list의 모든 클래스에서 부여해야합니 다.

Default:

(
    'rest_framework.permissions.AllowAny',
)

DEFAULT_THROTTLE_CLASSES

view의 시작에서 점검되는 기본 throttle set을 결정하는 throttle 클래스의 list 또는 tuple입니다.

Default: ()

DEFAULT_CONTENT_NEGOTIATION_CLASS

들어오는 request에 따라 rederer가 response에 대해 선택되는 방법을 결정하는 content negotiation 클래스 입니다.

Default: 'rest_framework.negotiation.DefaultContentNegotiation'


Generic view settings

다음 설정은 generic CBV의 동작을 제어합니다.

DEFAULT_PAGINATION_SERIALIZER_CLASS


이 설정은 제거되었습니다.

pagination API는 출력 형식을 결정하기 위해 serializer를 사용하지 않으므로 대신 출력 형식 제어 방법을 지정하기 위해 pagination 클래스의 'get_paginated_response` 메서드를 대체해야합니다.


DEFAULT_FILTER_BACKENDS

generic 필터링에 사용해야 하는 filter backend 클래스 list입니다. None으로 설정하면 generic 필터링이 비활성화됩니다.

PAGINATE_BY


이 설정은 제거 되었습니다.

pagination 스타일 설정에 대한 자세한 지침은 setting the pagination style를 참조하세요.


PAGE_SIZE

pagination에 사용할 기본 페이지 크기입니다. None으로 설정하면 기본적으로 pagination이 비활성화됩니다.

Default: None

PAGINATE_BY_PARAM


이 설정은 제거 되었습니다.

pagination 스타일 설정에 대한 자세한 지침은 setting the pagination style를 참조하세요.


MAX_PAGINATE_BY


이 설정은 지원 중단 예정입니다.

pagination 스타일 설정에 대한 자세한 지침은 setting the pagination style를 참조하세요.


SEARCH_PARAM

SearchFilter가 사용하는 검색어를 지정하는데 사용 할 수 있는 검색어 parameter의 이름입니다.

Default: search

ORDERING_PARAM

OrderingFilter에 의해 반환 된 결과의 순서를 지정하는데 사용할 수 있는 쿼리 parameter의 이름입니다.

Default: ordering


Versioning settings

DEFAULT_VERSION

버전 정보가 없는 경우 request.version에 사용해야 하는 값입니다.

Default: None

ALLOWED_VERSIONS

이 값을 설정하면 버전 체계에 의해 반환 될 수 있는 버전 set이 제한되며, 제공된 버전이 이 set에 포함되어 있지 않으면 오류가 발생합니다.

Default: none

VERSION_PARAM

미디어 타입 또는 URL 쿼리 parameter와 같이 모든 버젼 지정 parameter에 사용해야하는 문자열입니다.

Default: version


Authentication settings

다음 설정은 인증되지 않은 요청의 동작을 제어합니다.

UNAUTHENTICATED_USER

인증되지 않은 요청에 대해 request.user를 초기화하는데 사용해야하는 클래스입니다.

Default: django.contrib.auth.models.AnonymousUser

UNAUTHENTICATED_TOKEN

인증되지 않은 요청에 대해 request.auth를 초기화하는데 사용해야 하는 클래스입니다.

default: None

Test settings

다음 설정은 APIRequestFactory 및 APIClient의 동작을 제어합니다.

TEST_REQUEST_DEFAULT_FORMAT

테스트 요청을 할때 사용해야하는 기본 형식입니다.
이 값은 TEST_REQUEST_RENDERER_CLASSES설정의 renderer 클래스 중 하나의 형식과 일치해야합니다.

Default: 'multipart'

TEST_REQUEST_RENDERER_CLASSES

테스트 요청을 작성할 때 지원되는 renderer 클래스입니다.
client.post('/users', {'username': 'jamie'}, format='json') 이러한 renderer 클래스의 형식은 테스트 요청을 구성 할 때 사용할 수 있습니다.

Default:

(
    'rest_framework.renderers.MultiPartRenderer',
    'rest_framework.renderers.JSONRenderer'
)

Schema generation controls

SCHEMA_COERCE_PATH_PK

이것을 설정하면 schema path parameter를 생성할 때 URL conf의 'pk'식별자를 실제 필드 이름으로 매핑합니다. 일반적으로 'id'가 됩니다. 이것은 “indentifer”가 좀 더 일반적인 개념인 반면 “primary key”는 세부 사항이므로 보다 적합한 표현을 제공합니다.

Default: True

SCHEMA_COERCE_METHOD_NAMES

이것이 설정되면 내부 viewset 메소드 이름을 schema generation에 사용 딘 외부 액션 이름에 매핑하는데 사용됩니다. 이것은 코드 베이스에서 내부적으로 사용되는 것보다 외부 표현에 더 적합한 이름을 생성할 수 있게 해줍니다.

Default: {'retrieve': 'read', 'destroy': 'delete'}


Content type controls

URL_FORMAT_OVERRIDE

기본 content negotiation Accept을 오버라이드하는데 사용할 수 있는 URL parameter의 이름 요청 URL에서 format=... 쿼리 parameter를 사용하여 헤더의 동작을 허용합니다.

예: http://example.com/organizations/?format=csv

이 설정 값이 None이면 URL 형식 오버라이드가 비활성화 됩니다.

Default: 'format'

FORMAT_SUFFIX_KWARG

format suffix를 제공하는데 사용할 수 있는 URL conf의 parameter 이름입니다. 이 설정은 format_suffix_pattern`을 사용하여 접미사로 된 URL패턴을 포함할 때 적용됩니다.

예: http://example.com/organizations.csv/

Default: 'format'


Date and time formatting

다음 설정은 날짜 및 시간 표현을 파싱하고 렌더링하는 방법을 제어하는데 사용됩니다.

DATETIME_FORMAT

DateTimeField Serializer 필드의 출력을 렌더링하기 위해 기본적으로 사용해야 하는 형식 문자열입니다. None이면 DateTimeField serializer 필드는 Python datetime객체를 반환하고, datetime 인코딩은 렌더러에 의해 결정됩니다.

None, 'iso-8601'또는 Python strftime format 형식 문자열 주 하나 일 수 있습니다.

Default: 'iso-8601'

DATETIME_INPUT_FORMATS

DateTimeField serializer 필드에 대한 입력을 파싱하기위해 기본적으로 사용해야하는 형식문자열 list입니다.
문자열 'iso-8601'또는 python strftime format형식 문자열을 포함하는 list일 수 있습니다.

Default: ['iso-8601']

DATE_FORMAT

DateField serializer필드의 출력을 렌더링하기 위해 기본적으로 사용해야하는 형식 문자열입니다. None이면 DateField serializer 필드는 Python date 객체를 반환하고 날짜 인코딩은 렌더러에 의해 결정됩니다.

None, 'iso-8601'또는 python strftime format형식 문자열을 포함하는 list일 수 있습니다.

Default: ['iso-8601']

DATE_INPUT_FORMATS

DateField serializer 필드에 대한 입력을 파싱하기 위해 기본적으로 사용해야하는 형식 문자열 list입니다.

문자열 'iso-8601'또는 python strftime format형식 문자열을 포함하는 list일 수 있습니다.

Default: ['iso-8601']

TIME_FORMAT

TimeField serializer 필드의 출력을 렌더링 할 때 기본저긍로 사용해야하는 형식 문자열입니다. None 이면 TimeField serializer 필드는 Python time 객체를 반환하고 time 인코딩은 렌더러에 의해 결정됩니다.

None, 'iso-8601'또는 python strftime format형식 문자열을 포함하는 list일 수 있습니다.

Default: ['iso-8601']

TIME_INPUT_FORMATS

TimeField serializer 필드에 대한 입력을 파싱하기 위해 기본적으로 사용해야 하는 형식 문자열 list입니다.

문자열 'iso-8601'또는 python strftime format형식 문자열을 포함하는 list일 수 있습니다.

Default: ['iso-8601']


Encodings

UNICODE_JSON

True로 설정하면, JSON response가 response에 유니코드 문자를 허용합니다.

{"unicode black star":"★"}

False로 설정하면 JSON response가 다음과 같이 non-ascii 문자를 이스케이프합니다.

{"unicode black star":"\u2605"}

두 스타일 모두 RFC 4627을 준수하며 구문적으로 유효한 JSON입니다. 유니코드 스타일은 API 응답을 검사할 때보다 사용자에게 친숙한 것으로 선호됩니다.

Default: True

COMPACT_JSON

True로 설정하면 JSON response sms ':'','문자 다음에 공백없이 간결한 표현을 반환합니다.

{"is_admin":false,"email":"jane@example"}

False로 설정하면 JSON 응답이 다음과 같이 약간 더 자세한 표현을 반환합니다.

{"is_admin": false, "email": "jane@example"}

기본 스타일은 Heroku’s API design guidelines에 따라 축소 된 응답을 반환하는 것입니다.

Default: True

COERCE_DECIMAL_TO_STRING

기존 decimal(10진) type을 지원하지 않는 API 표현에서 decimal 오브젝트를 리턴할 때, 일반적으로 값을 문자열로 리턴하는 것이 가장 좋습니다. 따라서 바이너리 부동 소수점 구현에서 발생하는 정밀도의 손실을 피할 수 있습니다.
True로 설정하면 serializer DecimalField 클래스가 Decimal 객체 대신 문자열을 반환합니다. False로 설정하면, serializer는 Decimal 객체를 반환합니다. 이 객체는 기본 JSON 인코더가 float으로 반환합니다.

Default: True


View names and descriptions

다음 설정은 OPTIONS 요청에 대한 응답 및 Browsable API에서 사용되는 것과 같이 뷰 이름 및 설명을 생성하는데 사용됩니다.

VIEW_NAME_FUNCTION

뷰 이름을 생성할 때 사용해야하는 함수를 나타내는 문자열입니다.
이것은 다음 시그니처가 있는 함수이어야 합니다.

view_name(cls, suffix=None)
  • cls : 뷰 클래스. 일반적으로 이름 함수는 cls.__name__에 액서스하여 설명적인 이름을 생성 할 때 클래스 이름을 검사합니다.
  • suffix : viewset에서 개별 뷰를 구별 할 때 사용되는 선택적 suffix

Default: 'rest_framework.views.get_view_name'

VIEW_DESCRIPTION_FUNCTION

뷰 설명을 생성 할 때 사용해야하는 함수를 나타내는 문자열입니다.
기본 설정 값 이외의 태그 스타일을 지원하도록 이 설정을 변경할 수 있습니다. 예를 들어, 브라우저에서 볼 수 있는 API로 출력되는 뷰 문서 문자열의 rst 마크업을 지원하는데 사용할 수 있습니다.
이것은 다음 시그니처가 있는 함수이어야 합니다.

view_description(cls, html=False)
  • cls : 뷰 클래스. 일반적으로 설명 함수는 cls.__doc__에 액서스하여 설명을 생성 할 때 클래스의 문서화 문자열을 검사합니다.

  • html : HTML 출력이 필요한지 나타내는 boolean입니다. 탐색 가능한 API에서 사용되면 True이고, OPTIONS응답을 생성하는데 사용되면 False입니다.

Default: 'rest_framework.views.get_view_description'

HTML Select Field cutoffs

Browsable API에서 관계형 필드를 렌더링하기 위한 선택 필드 컷오프에 대한 전역 설정입니다.

HTML_SELECT_CUTOFF

html_cutoff값의 전역 설정입니다. 정수이어야 합니다.

Default: 1000

HTML_SELECT_CUTOFF_TEXT

html_cutoff_text의 전역 설정을 나타내는 문자열입니다.

Default: "More than {count} items..."


Miscellaneous settings

EXCEPTION_HANDLER

지정된 예외에 대한 응답을 반환할 때 사용해야하는 함수를 나타내는 문자열입니다. 이 함수가 None을 반환하면 500 error가 발생합니다.
이 설정은 기본 {"detail": "Failure..."}응답 이외의 오류 응답을 지원하도록 변경할 수 있습니다. 예를 들어 {"errors": [{"message": "Failure...", "code": ""} ...]}와 같은 API 응답을 제공하는데 사용할 수 있습니다.

이것은 다음 시그니처가 있는 함수이어야 합니다.

exception_handler(exc, context)
  • exc : 예외

Default: 'rest_framework.views.exception_handler'

NON_FIELD_ERRORS_KEY

특정 필드를 참조하지 않고 일반적인 오류인 serializer 오류에 사용해야하는 키를 나타내는 문자열입니다.

Default: 'non_field_errors'

URL_FIELD_NAME

HyperlinkedModelSerializer에 의해 생성 된 URL 필드에 사용해야하는 키를 나타내는 문자열입니다.

Default: 'url'

NUM_PROXIES

API가 실행되는 응용 프로그램 프록시 수를 지정하는데 사용할 수 있는 0 이상의 정수입니다. 이렇게 하면 throttling을 통해 클라이언트 IP 주소를 보다 정확하게 식별할 수 있습니다. None으로 설정하면 덜 엄격한 IP 매칭이 throttle 클래스에서 사용됩니다.

Default: None

django
comments powered by Disqus