본문 바로가기

Django

Django-environ 패키지를 활용한 Django 환경변수 설정

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-environ

https://github.com/cookiecutter/cookiecutter-django

'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