본문 바로가기
Category/Django

django-environ란?

by Corinee 2024. 9. 16.
728x90
반응형

django-environ은 Django 프로젝트에서 환경 변수를 쉽게 관리하고, 외부 설정 파일을 읽어와서 Django의 설정으로 적용할 수 있도록 도와주는 패키지입니다. 주로 환경 설정 관리를 쉽게 하기 위해 사용되며, Django 프로젝트를 다양한 환경(개발, 테스트, 운영 등)에서 유연하게 설정할 수 있도록 도와줍니다.

주요 기능

  1. 환경 변수 로드:
    • django-environ은 .env 파일에 저장된 환경 변수를 불러와 Django 설정에서 사용할 수 있게 합니다. 환경 변수를 통해 비밀번호, API 키, 데이터베이스 연결 정보 등 민감한 데이터를 관리할 수 있습니다.
  2. 다양한 데이터 타입 지원:
    • 문자열뿐만 아니라 정수, 부울 값, 리스트 등 다양한 데이터 타입을 환경 변수로 정의하고 이를 변환해 사용할 수 있습니다.
  3. 디폴트 값 제공:
    • 환경 변수가 설정되지 않은 경우 사용할 기본 값을 지정할 수 있어, 유연한 설정이 가능합니다.
  4. 다양한 설정 소스:
    • .env 파일 외에도 OS 환경 변수 또는 기본 값에서 데이터를 읽어올 수 있습니다. 이를 통해 개발, 운영 환경에서 다른 설정을 적용할 수 있습니다.

설치

django-environ 패키지를 설치하려면 pip를 사용합니다.

pip install django-environ

사용 방법

1. Django 프로젝트에서 django-environ 설정하기: 먼저, settings.py 파일에서 django-environ을 사용해 환경 변수를 불러올 수 있도록 설정합니다.

import environ

# .env 파일 경로 설정
env = environ.Env(
    # 설정할 기본값 정의
    DEBUG=(bool, False)
)

# .env 파일을 로드
environ.Env.read_env()

2. 환경 변수를 설정하고 사용하기: .env 파일을 프로젝트의 루트 디렉토리에 생성하고, 그 안에 환경 변수를 저장합니다. 예를 들어:

.env 파일:

DEBUG=True
SECRET_KEY=your_secret_key
DATABASE_URL=postgres://user:password@localhost:5432/dbname

settings.py에서 환경 변수 사용:

# .env 파일에서 불러온 값 사용
DEBUG = env('DEBUG')

SECRET_KEY = env('SECRET_KEY')

# 데이터베이스 설정
DATABASES = {
    'default': env.db()
}

 

  • env('DEBUG'): .env 파일에서 DEBUG 값을 읽고, 만약 설정되지 않았다면 기본값으로 False를 사용합니다.
  • env.db(): .env 파일의 DATABASE_URL 값을 사용해 Django의 DATABASES 설정을 자동으로 구성합니다.

 

3. 다른 데이터 타입 지원: django-environ은 기본적으로 문자열을 읽어오지만, 다음과 같이 다른 데이터 타입으로 변환해 사용할 수 있습니다.

DEBUG = env.bool('DEBUG', default=False)
ALLOWED_HOSTS = env.list('ALLOWED_HOSTS', default=[])

 

  • env.bool('DEBUG'): True, False 값을 환경 변수로 처리
  • env.list('ALLOWED_HOSTS'): 환경 변수에서 콤마로 구분된 값을 리스트로 변환

 

예시

.env 파일 예시:

DEBUG=True
SECRET_KEY=super_secret_key
ALLOWED_HOSTS=localhost,127.0.0.1
DATABASE_URL=postgres://user:password@localhost:5432/mydb

settings.py 파일에서 사용:

import environ

# 환경 변수 관리 초기화
env = environ.Env(
    DEBUG=(bool, False)
)

# .env 파일 읽기
environ.Env.read_env()

# 환경 변수를 사용하여 설정 적용
DEBUG = env('DEBUG')
SECRET_KEY = env('SECRET_KEY')
ALLOWED_HOSTS = env.list('ALLOWED_HOSTS')

DATABASES = {
    'default': env.db(),
}

장점

  1. 환경 분리:
    • 개발 환경, 테스트 환경, 운영 환경 등에서 각각 다른 .env 파일을 사용하여 설정을 쉽게 분리할 수 있습니다.
  2. 보안성:
    • 민감한 정보를 코드에 직접 포함하지 않고 환경 변수로 분리할 수 있어 보안성을 높일 수 있습니다.
  3. 유연성:
    • 프로젝트를 배포하거나 개발할 때 환경에 따라 다른 설정을 유연하게 적용할 수 있습니다.

요약

  • django-environ은 Django 프로젝트에서 환경 변수를 쉽게 관리하고 설정할 수 있도록 돕는 패키지입니다.
  • .env 파일을 통해 환경 변수들을 로드하고 이를 Django의 설정에 적용할 수 있습니다.
  • 데이터베이스 설정, API 키, 보안 관련 설정 등을 환경 변수로 관리하여 보안성유연성을 확보할 수 있습니다.