rest_framework의 디폴트 설정은 rest_framework/settings.py
내 DEFAULTS 사전을 통해 확인할 수 있다.
DEFAULTS = {
'DEFAULT_RENDERER_CLASSES': (
'rest_framework.renderers.JSONRenderer',
'rest_framework.renderers.BrowsableAPIRenderer',
),
}
- JSONRenderer : JSON 포맷 응답, 실제 서비스 API 응답
- BrowsableAPIRenderer : HTML 포맷 응답(웹브라우저), 개발 시에 용이
DEFAULTS = {
'DEFAULT_PARSER_CLASSES': (
'rest_framework.parsers.JSONParser',
'rest_framework.parsers.FormParser',
'rest_framework.parsers.MultiPartParser',
),
}
- JSONParser : JSON 포맷 요청 처리
- FormParser : enctype application/x-www-form-urlencoded 요청 처리
- MultiPartParser : encytpe multipart/form-data 요청 처리 (파일 업로드 지원)
DEFAULTS = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.BasicAuthentication'
),
}
- SessionAuthentication : 세션을 통해 인증 유저를 찾음
- BasicAuthentication : 각 HTTP 요청에 대해 Basic Authentication을 수행
DEFAULTS = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.AllowAny',
),
}
디폴트 설정으로 모든 접근을 허용(AllowAny)한다.
디폴트 설정으로 Throttling이 꺼져있어, 무분별한 API 호출을 막을 수 있다.
DEFAULTS = {
'DEFAULT_THROTTLE_CLASSES': (),
'DEFAULT_THROTTLE_RATES': {
'user': None,
'anon': None,
}
}
- DEFAULT_THROTTLE_CLASSES : 최대 호출를 제한할 로직 (클래스)
- DEFAULT_THROTTLE_RATES : 최대 호출 횟수 지정
DEFAULTS = {
'DEFAULT_PAGINATION_CLASS': None,
'PAGE_SIZE': None
}
- DEFAULT_PAGINATION_CLASS : 페이징을 처리할 로직 (클래스)
- PAGE_SIZE : 1페이지 최대 갯수
DEFAULTS = {
'DEFAULT_FILTER_BACKENDS': (),
'SEARCH_PARAM': 'search',
'ORDERING_PARAM': 'ordering',
}
DB에서 where 조건을 넣어주는 것과 동일한 설정이다. 디폴트로 필터 꺼짐 상태이다.
from rest_framework import ISO_8601
DEFAULTS = {
# input and output formats
'DATE_FORMAT': ISO_8601,
'DATE_INPUT_FORMATS': [ISO_8601],
'DATETIME_FORMAT': ISO_8601,
'DATETIME_INPUT_FORMATS': [ISO_8601],
'TIME_FORMAT': ISO_8601,
'TIME_INPUT_FORMATS': [ISO_8601],
}
날짜/시간 포맷은 모두 동일하게 ISO_8601로 설정되어 있다.
DEFAULTS = {
'UNICODE_JSON': True,
'COMPACT_JSON': True,
'STRICT_JSON': True,
'COERCE_DECIMAL_TO_STRING': True,
'UPLOADED_FILES_USE_URL': True,
}
json.dumps()를 통해 직렬화를 할 때 들어가는 옵션이다. 거의 바꿀 일은 없고 default 값을 사용하면 된다.
DEFAULTS = {
'HTML_SELECT_CUTOFF': 1000,
'HTML_SELECT_CUTOFF_TEXT': "More than {count} items...",
}
- HTML_SELECT_CUTOFF : Choice 옵션에서 Option 최대 허용수
- HTML_SELECT_CUTOFF_TEXT : 초과 시의 안내 메세지