Django 공식 Document 중 settings 에 대한 자료중에 스터디에 필요한 설정값만 추려서 정리해보았습니다. 자세한 사항은 아래의 링크를 참조하시기 바랍니다.
SECRET_KEY
기본값 : '' (빈 문자열)
비밀키는 암호화 서명에 사용되는 값이며, 예상할수 없는 식별값으로 설정해야 한다.
django-admin startproject는 자동적으로 임의로 할당된 SECRET_KEY 를 새로운 프로젝트에 할당한다.
SECRET_KEY가 설정되어 있지않으면 Django는 실행되지 않는다.
SECRET_KEY가 사용되는 경우
- 모든 sessions 에서 만약 django.contrib.sessions.backends.cache나 기본 get_session_auth_hash()를 사용할 때
- 모든 messages 에서 CookieStorage 나 FallbackStorage를 사용할 때
- password_reset()을 사용할때
- 다른 키가 제공되지 않으면서 cryptograpic signing 을 사용할 때
DEBUG
기본값 : False
불리언 값으로 Debug 모드를 켜고 끈다. 절대로 DEBUG를 켠 상태로 사이트를 배포해서는 안된다.
Debug 모드는 오류 페이지에 자세한 정보를 보여준다. 만약 app의 오류가 발생하고 Debug 모드가 True 이면 서버환경의 수많은 메타 정보와 함께 자세한 정보를 노출하게 된다. (최근에 설정한 세팅값- settings.py..)
또한 Debug 모드가 켜진경우 SQL Query를 Django가 모드 기억하기 때문에 개발자에게는 유용하지만 Production 서버의 메모리를 빠르게 점유하게 된다.
ALLOWED_HOSTS
기본값 : [ ] (빈 리스트)
Django가 서비스하는 host/domain 을 나타내는 문자열 목록이다. 이 설정값은 HTTP Host header Attacks을 방지하기 위한 보안 수단이다. 이 공격은 웹 서버 설정을 안전한것처럼 보이게 할 수 있다.
- Host Header Attack은 임의의 웹사이트에 HTTP Header에 "Host" 필드가 포함된 요청을 전송해 이에 대한 처리가 취약한 애플리케이션이 해당 요청을 적절히 처리하지 못하도록 만든다.
INSTALLED_APPS
기본값 : [ ] (빈 리스트)
Django에서 사용할수 있는 Application 문자열 목록이다. 각각 문자열은 Python Path 와 같이 .으로 구분되야만 한다.
- 코드에서는 절대로 INSTALLED_APPS에 직접적으로 접근해서는 안되며 django.apps.apps를 대신 사용해야 한다.
- Application 이름과 label 명은 INSTALLED_APPS 목록에서 유니크해야 한다.
MIDDLEWARE
Django에서 사용되는 Middleware의 목록이다.
ROOT_URLCONF
기본값 : 정의되지 않음
URLconf 를 import하기 위한 Python 경로 문자열을 저장한다. ex)"mydjangoapps.urls" HttpRequest 객체의 urlconf 값을 설정하여 요청마다 오버라이드가 가능하다.
TEMPLATES
기본값 : [ ] (빈 리스트)
Django 에서 동작할 템플릿 엔진의 목록을 포함한다. 각 항목은 개별 엔진에 대한 설정을 포함하는 딕셔너리로 구성된다.
기본 내장된 BACKEND는 다음과 같다.
- django.template.backends.django.DjangoTemplates
- django.template.backends.jinja2.Jinja2
WSGI_APPLICATION
기본값 : None
WSGI Application object의 Python 전체경로이다. 이 객체는 Django의 내장 서버가 사용한다. django-admin startproject 명령어는 wisg.py 파일을 호출할수 있는 application 과 함께 생성한다.
이값이 설정되지 않으면 django.core.wsgi.get_wsgi_application()이 사용된다.
DATABASES
기본값 : { } (빈 딕셔너리)
Django에서 사용되는 모든 Database의 설정값이 포함된 딕셔너리이다. 각 Database 의 옵션을 포함하는 딕셔너리를 가진다.
DATABASE 세팅에는 default가 반드시 설정되어야 하며, 추가적인 database들을 명시할 수 있다.
MySQL, Oracle, PostgreSQL과 같은 다른 database backend를 연결할 때는 추가적인 파라미터가 필요하다. 아래에 설명된 ENGINE 과 구체적인 사용법을 참고하라.
AUTH_PASSWORD_VALIDATORS
기본값 : [ ] 빈 리스트
User의 비밀번호 체크를 강화하기 위해 사용되는 유효성검사 리스트이다. 기본적으로는 유효성 검사가 포함되어 있지않고 모든 패스워드가 통과될수 있다.
LANGUAGE_CODE
기본값 : 'en-us'
해당 환경의 언어코드를 나타내는 문자이다. 반드시 규정된 language ID를 사용해야 한다. 이 설정이 효과를 갖기 위해서는 위해 USE_I18N 이 활성이 되야만한다. 두가지 이유는 다음과 같다
- locale middleware 가 사용되지 않을 때, 모든 user의 번역을 지원한다.
- locale middleware 가 사용된다면, user가 선호하는 언어가 설정되어 있지 않다면 fallback 언어를 제공할 수 있다.
TIME_ZONE
기본값 : 'America/Chicago'
해당 환경의 타임존을 나타내는 문자열이나 None을 입력할 수 있다.
USE_I18N
기본값 : True
Django가 번역 시스템을 허용할지에 대한 불리언 값을 명시한다. False로 설정된다면 번역에 최적화된 동작을 하지 못한다.
USE_L10N
기본값 : False
기본적으로 지역화된 형식을 사용할지에 대한 여부를 명시한다. True로 설정되면 Django는 지역에 따른 data와 숫자포맷을 보여준다.
STATICFILES_DIRS
기본값 : [ ] (빈 리스트)
FileSystemFinder 모듈이 만약 사용가능한 경우 staticfiles app의 추가적인 위치를 정의한다.
추가되는 경로의 경우 전체 경로가 포함되야만 한다.
STATIC_URL
기본값 : None
STATIC_ROOT에 위치한 static file을 참조하기 위해 사용하는 URL이다.
ex) "/static/" 이나 "https://static.example.com"
AUTH_USER_MODEL
기본값 : 'auth.User'
User를 지정하기 위해 사용하는 모델