TIL56 - django-environ을 이용한 환경변수 관리

Kiyong Lee·2021년 12월 3일
5

Django

목록 보기
32/35
post-custom-banner

django-environ을 이용한 환경변수 관리


이전까지 루트에 my_settings.py라는 걸 만들어서 시크릿키 같은 걸 관리하던 중

django-environ을 이용하여 환경변수 관리하는 법을 알게되었다.


1. django-environ 설치

일단 django-envirion 라이브러리를 설치해줘야 한다.

pip install django-environ

설치 후 아래 명령어를 입력해서 잘 설치됐나 확인해본다

내꺼에는 0.8.1 버전으로 설치가 되었다.

pip freeze

그리고 manage.py가 있는 루트 디렉토리에 이 파일 하나 추가해야된다.

touch .env

2. env 파일에 변수 넣기

# .env 파일에 이렇게 넣음
SECRET_KEY='django-insecure-fqve&3!urq5wjhq6h(+hu*)04$zfqyg+o!6d!+*=+2wy8i@y5$'
DEBUG=True

변수와 값 사이에 공백이 없게 넣어야 한다 꼭


3. settings.py에 적용

settings.py로 가서 우선 SECRET_KEYDEBUG만 설정해보겠다

설명은 코드안에 주석으로 함

'''
1. 우선 os와 environ을 import 한다.
'''
import os
import pymysql
import environ

from pathlib import Path

# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
'''
2. 각 호출자가 기본 매개변수를 전달할 필요가 없도록 환경 변수의 체계 기반 조회를 제공합니다.
라고 번역하니 나와있는데, 무슨말인지 생각해보니 환경변수를 불러올 수 있는 상태로 세팅한다고
이해했다. 
'''
env = environ.Env(DEBUG=(bool, True))

'''
3. 환경변수를 읽어올 준비는 마쳤고, 어떤 파일에서 불러올건지 정해줘야 하기 때문에
나는 '.env'에서 가져올거라고 설정해줬다.
'''
environ.Env.read_env(
    env_file=os.path.join(BASE_DIR, '.env')
)

pymysql.install_as_MySQLdb()
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/3.2/howto/deployment/checklist/

'''
4. SECEREY_KEY와 DEBUG에 넣은 값들을 불러올 수 있게 설정
'''
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = env('SECRET_KEY')

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = env('DEBUG')

4. 확인


4-1. migrate

python manage.py migrate


4-2. runserver

python manage.py runserver 


4-3. 변수와 값 사이 띄어쓰기 존재 시

SECRET_KEY ='django-insecure-fqve&3!urq5wjhq6h(+hu*)04$zfqyg+o!6d!+*=+2wy8i@y5$'
DEBUG=True

보면 SECERY_KEY=사이에 공백이 하나 있는데, 이대로 실행하면

이렇게 KEY_ERROR가 뜬다.

변수=값
변수=

이거는 그냥 잘 돌아가는데, 키 값에만 띄어쓰기가 존재할 시 에러가 발생한다.

그냥 무조건 붙여쓰는 습관을 들이자!

profile
ISTJ인 K-개발자
post-custom-banner

0개의 댓글