일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- c++
- 알고리즘 풀이
- 알고리즘
- django widget
- DRF
- 알고리즘 연습
- javascript
- AWS
- django rest framework
- web
- CSS
- Algorithm
- API
- Baekjoon
- 알고리즘 문제
- es6
- MAC
- 파이썬
- Git
- js
- 장고
- 파이썬 알고리즘
- 백준
- PYTHON
- java
- react
- HTML
- form
- django ORM
- Django
- Today
- Total
수학과의 좌충우돌 프로그래밍
[Django] rest_framework default 설정 본문
rest_framework 의 각종 default 설정에 대해서 알아보겠습니다.
https://github.com/encode/django-rest-framework/blob/master/rest_framework/settings.py
장고 공식문서 rest_framework/settings.py
의 DEFAULTS
dict 를 통해 확인할 수 있습니다.
현재 블로그는 2020년 1월 8일 3.9 버전에 대한 내용입니다.
HTTP 최종 응답 생성
'DEFAULT_RENDERER_CLASSES': [
'rest_framework.renderers.JSONRenderer',
'rest_framework.renderers.BrowsableAPIRenderer',
],
-
JSONRenderer
- API 호출에 대한 응답
-
BrowsableAPIRenderer
- 웹 브라우저에서 보여지는 화면
HTTP 요청 내역 처리
'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
- enctype multipart/form-data 요청 처리 (파일 업로드 지원)
HTTP 요청의 인증
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.BasicAuthentication'
],
-
SessionAuthentication
- 세션을 통해 인증 유저 확인
-
BasicAuthentication
- Basic Authentication 을 수행
API 호출 권한 체크
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.AllowAny',
],
-
AllowAny
- 모든 접근을 허용
특정 시간 내, 최대 요청 수 제한 - throttling
'DEFAULT_THROTTLE_CLASSES': [],
'DEFAULT_THROTTLE_RATES': {
'user': None,
'anon': None,
},
기본적으로 throttling
아무 것도 설정되어 있지 않습니다.
-
DEFAULT_THROTTLE_CLASSES
- 최대 호출을 제한할 클래스
-
DEFAULT_THROTTLE_RATES
- rate 값, 지정 기간 내의 최대 호출 횟수 지정
페이징 처리
'DEFAULT_PAGINATION_CLASS': None,
'PAGE_SIZE': None,
-
DEFAULT_PAGINATION_CLASS
- 페이징을 처리할 클래스
-
PAGE_SIZE
- 한 페이지의 최대 갯수
문자열 매칭 검색 기능 - filter
'DEFAULT_FILTER_BACKENDS': [],
'SEARCH_PARAM': 'search',
'ORDERING_PARAM': 'ordering',
기본적으로 filter 기능은 꺼져 있습니다.
이는 DB 에서 where query 에 해당합니다.
날짜/시간 포맷
from rest_framework import ISO_8601
'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
값은 문자열 "iso-8601"
입니다.
ISO_8601 이란?
날짜와 시간과 관련된 데이터 교환을 다루는 국제 표준입니다.
국제표준화기구 ISO 에서 공포되었으며 1988년에 처음 공개되었습니다.
https://ko.wikipedia.org/wiki/ISO_8601
자세한 사항은 위키피디아를 참고하세요.
인코딩
'UNICODE_JSON': True,
'COMPACT_JSON': True,
'STRICT_JSON': True,
'COERCE_DECIMAL_TO_STRING': True,
'UPLOADED_FILES_USE_URL': True,
-
UNICODE_JSON
json.dumps
할 경우ensure_ascii=False
로 적용하게 되고 이는 UTF8 인코딩을 의미한다.
-
COMPACT_JSON
-
json.dumps
할 경우 separators 옵션을 적용-
True 일 경우
- 띄어쓰기 없음
- ex) ',' ':'
-
False 일 경우
- 띄어쓰기 있음
- ex) ', ' ': '
-
-
-
STRICT_JSON
-
json.dumps
할 경우allow_nan=False
를 적용- NaN, inf, -inf 등의 값에 대해서
ValueError
발생
- NaN, inf, -inf 등의 값에 대해서
-
-
COERCE_DECIMAL_TO_STRING
- Decimal 을 문자열로 강제 변환할지에 대한 여부
python 은 float 형과 decimal 형이 있는데 반해 javascript 는 float 형 밖에 없습니다. 따라서 변환 도중의 오류를 방지하기 위해서 decimal 은 str 으로 변환해줍니다.
-
UPLOADED_FILES_USE_URL
- 파일명 대신 URL을 제공할지에 대한 여부
Browseable API
# Browseable API
'HTML_SELECT_CUTOFF': 1000,
'HTML_SELECT_CUTOFF_TEXT': "More than {count} items...",
-
HTML_SELECT_CUTOFF
- Choice 옵션에서 Option 최대 허용 수
-
HTML_SELECT_CUTOFF_TEXT
- 개수 초과 시의 안내 메세지
'웹프로그래밍 > DRF' 카테고리의 다른 글
[Django] CORS, Cross-Origin Resource Sharing (0) | 2020.02.14 |
---|---|
[Django] Token 인증 적용하기, TokenAuthentication (3) | 2020.01.14 |
[Django] Throttling (0) | 2020.01.08 |
[Django] Authentication 과 Permissions (0) | 2020.01.08 |
[Django] Serializer 를 통한 유효성 검사 및 저장 (2) | 2019.12.30 |