django-environ 패키지는 장고 애플리케이션에 필요한 환경변수를 .env파일에 따로 구성할 수 있도록 해준다.
django-environ을 사용한 django의 settings.py의 예제다.
import os
from pathlib import Path
import environ
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
env = environ.Env()
ENV_MODE = env.str("ENV_MODE", "local")
env_file = ".env.{}".format(ENV_MODE)
# Take environment variables from .env file
env.read_env(os.path.join(BASE_DIR, env_file))
# print("Loading env from {}".format(env_file))
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/4.1/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = env.str("SECRET_KEY", "sample django secret key")
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = env.bool("DEBUG")
ALLOWED_HOSTS = env.list("ALLOWED_HOSTS")
env.str
, env.bool
, env.str
등, env 뒤에 타입을 지정해줘야 TypeError, django.core.exceptions.ImproperlyConfigured 에러가 발생하지 않는다.
settings.py는 위와 같이 environ
패키지를 사용해서 코드를 작성하면 env파일로부터 value를 가져와서 사용할 수 있다.
# env file 안
DEBUG=True
SECRET_KEY=sample_django_secret_key
ALLOWED_HOSTS=localhost
ENV_MODE = env.str("ENV_MODE", "local")
의 ENV_MODE
는 환경변수를 지정하면 env 파일을 변경할 수 있다. 리눅스에서는 export ENV_MODE=production
의 명령어를 사용하면, .env.production
라는 env 파일이 있을 경우, production용의 env 파일을 사용할 수 있다.
다른 패키지, DB등의 환경변수 설정을 알고 싶은 경우는
아래의 Reference에 있는 cookiecutter-django를 install하여 settings.py를 보면 많은 참고가 된다.
Reference
'Django' 카테고리의 다른 글
django fixture dumpdata (0) | 2023.02.20 |
---|---|
Django CharField editable (0) | 2023.02.09 |
Django 데이터베이스 mysql 설정하기 (0) | 2023.02.05 |
django allowed hosts invaild host header elb alb (0) | 2022.11.05 |