참고 : https://wikidocs.net/75560 (점프 투 장고)
# secrets.json
{
'SECRET_KEY' : 'lolololollol',
}
secrets.json
생성 후 .gitignore
에 추가
# settings.py
import os, json
from django.core.exceptions import ImproperlyConfigured
secret_file = os.path.join(BASE_DIR, 'secrets.json')
with open(secret_file) as f:
secrets = json.loads(f.read())
def get_secret(setting, secrets=secrets):
"""비밀 변수 가져오기 or 예외 반환"""
try:
return secrets[setting]
except KeyError:
error_msg = "Set the {} environment variable".format(setting)
raise ImproperlyConfigured(error_msg)
SECRET_KEY = get_secret("SECRET_KEY")
settings.py
가 있던 위치에 /settings
폴더를 만들어주고 __init__.py
생성
project
settings
__init__.py
base.py
local.py
prod.py
base.py
파일에는 기존 settings.py
내용을 넣어주고, local.py
prod.py
에서 상속 받아준 다음 필요한 세팅을 추가한다.
그리고 base.py
에 있는 BASE_DIR
에 .parent 한번 추가
# base.py
...
BASE_DIR = Path(__file__).resolve().parent.parent.parent
...
local.py
: base.py
를 모두 임포트한 뒤 debug=True
로 설정하고 개발용 db 설정(debug가 True면 allowed_host
엔 자동으로 로컬주소입력)
prod.py
: base.py
를 모두 임포트한 뒤 debug=False
로 설정하고 배포용 db 설정
분리한 setting 적용
python manage.py runserver --settings=config.settings.prod # 배포
python manage.py runserver --settings=config.settings.local # 개발
위와 같이 해도 되지만 DJANGO_SETTINGS_MODULE
환경 변수 설정으로 더 쉽게 실행 가능!
# window
(mysite) c:\projects\mysite>set DJANGO_SETTINGS_MODULE=config.settings.local
(mysite) c:\projects\mysite>python manage.py runserver
# mac
$ export DJANGO_SETTINGS_MODULE=config.settings.development
$ python manage.py runserver