보통 프로젝트를 시작하면 한개의 settings.py 파일이 존재한다. 하지만 실무에서는 로컬환경, 배포환경으로 환경설정이 나누어져있다. 로컬환경은 일반적으로 오류를 검출하기 위한 환경을 가지며, 배포환경에서는 로그 기록이나 오류를 숨겨 사용자 편의성을 도모하고 악의적인 해커로부터 보호하는 환경을 설정한다.
#!/usr/bin/env python
import os
import sys
if __name__ == '__main__':
# setdefault를 development로 설정해준다.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings.development')
try:
from django.core.management import execute_from_command_line
except ImportError as exc:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
) from exc
execute_from_command_line(sys.argv)
wsgi
uswgi명령을 통해서 직접 웹어플리케이션 서버를 실행할 때 사용할 설정 파일을 실행 환경별로 분리할 수 있다.
"""
WSGI config for config project.
It exposes the WSGI callable as a module-level variable named ``application``.
For more information on this file, see
https://docs.djangoproject.com/en/2.1/howto/deployment/wsgi/
"""
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings.development')
application = get_wsgi_application()
production.py
"""
WSGI config for config project.
It exposes the WSGI callable as a module-level variable named ``application``.
For more information on this file, see
https://docs.djangoproject.com/en/2.1/howto/deployment/wsgi/
"""
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings.production')
application = get_wsgi_application()
requirements.txt
어떤 패키지는 운영 시에는 사용되지 않지만 개발의 편의를 위해서 필요한 경우가 있다. 이러한 경우에 requirements.txt 파일을 분리해서 사용하기도 한다.