Django의 .env 파일 사용하기

DARTZ·2022년 4월 4일
1

Projects

목록 보기
4/5

서론

.env 파일을 사용하는 이유?

웹사이트를 개발하다보면 데이터베이스 저장소의 이름이나 비밀번호, Cors설정 등 로컬 환경에서 개발할 때와 서비스 배포를 할 때 달라지는 값들이 많이 생깁니다. 개발 단계에서는 settings/base.py에서 고정 값으로 적어놓아도 문제가 없지만 배포 단계에서는 값이 바뀌었을 때, 코드를 수정하고 재배포를 해줘야하는 문제점등이 생깁니다. 그리고 만약에 코드가 유출 되었을 경우 서버의 데이터베이스 저장소나 자체 암호화등에 쓰이는 Secret Key등이 노출되어 최악의 경우 사이트가 해킹당하는 문제가 발생할 수가 있습니다. 그래서 이런 민감한 정보는 따로 .env 파일을 통해 관리해주는 것이 안전합니다.

.env 파일은 기본적으로 git에 push 하지 않는다. 배포 서버에서 따로 .env파일을 만들어 사용하시면 됩니다.

.gitginore파일에 .env를 추가해주시면 됩니다.

본론

1. django-environ 설치

pip install django-environ

Django와 Wagtail의 env 모듈입니다.

2. .env 파일 작성

project폴더에 .env 파일을 만들면 됩니다. 가장 상위 폴더에 만드시면 됩니다.

SECRET_KEY='something'
FRONTEND='something'
AWS_BUCKET='something'
...

보통 .env파일에는 Django Secret Key나 데이터베이스 정보등을 담습니다.

3. 코드에서 사용

사용방법은 매우 간단합니다.
settings.py에 아래 내용을 추가합니다.

import environ
import os

env = environ.Env(
    # set casting, default value
    DEBUG=(bool, False)
)

# Set the project base directory
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

# Take environment variables from .env file
environ.Env.read_env(os.path.join(BASE_DIR, '.env'))

os.environ.get('AWS_BUCKET') # 기본 사용방법

이렇게 하면 .env 파일에 설정해온 변수를 가져올 수 있습니다.
만약에 변수 설정이 안되어 있을 때, 기본 값을 가져오고 싶다면 다음과 같이 하면 됩니다.

os.environ.get('AWS_BUCKET', 's3.something.url.com') # AWS_BUCKET이라는 환경변수가 없거나 Null일 경우 s3.something.url.com을 사용합니다.
profile
사람들이 비용을 지불하고 사용할 만큼 가치를 주는 서비스를 만들고 싶습니다.

0개의 댓글