여태까지는 settings.py 와 my_settings.py를 이용해서 개발했었다면 현직에서는 그렇지 않다는 것을 깨달았다. 그래서 분리하는 법을 공부했다.
settings 디렉토리
__init__.py
wsgi 디렉토리
__init__.py
import os
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
ROOT_DIR = os.path.dirname(BASE_DIR)
LANGUAGE_CODE = 'ko-kr'
TIME_ZONE = 'Asia/Seoul'
USE_I18N = True
USE_L10N = True
USE_TZ = True
# installed app, middleware 등..
from .base import *
DEBUG = True
WSGI_APPLICATION = 'api.wsgi.local.application'
DATABASES = {
'default' : {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'DB이름',
'USER': '이름',
'PASSWORD': '',
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
# secret_key 도 기재
from .base import *
DEBUG = False
WSGI_APPLICATION = 'api.wsgi.deploy.application'
DATABASES = {
'default' : {
'ENGINE': '',
'NAME': 'DB이름',
'USER': '이름',
'PASSWORD': '',
'HOST': '아마존',
'PORT': '',
}
}
# secret_key 도 기재
# local.py
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'api.settings.local')
application = get_wsgi_application()
# deploy.py
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'api.settings.deploy')
application = get_wsgi_application()
호출은 다음과 같이 한다. 나는 0:8000을 추가했는데 이걸 빼도 상관은 없다.
python manage.py runserver 0:8000 --settings=api.settings.deploy
python manage.py runserver 0:8000 --settings=api.settings.local
기본적으로 설정은 완료가 된 것이다.
django.core.exceptions.ImproperlyConfigured: settings.DATABASES is improperly configured. Please supply the ENGINE value. Check settings documentation for more details.
pip install whitenoise 해보세요
아니면, installed_app에 테이블 안넣은 것일 수도 있음!