이전까지 루트에 my_settings.py
라는 걸 만들어서 시크릿키 같은 걸 관리하던 중
django-environ
을 이용하여 환경변수 관리하는 법을 알게되었다.
일단 django-envirion
라이브러리를 설치해줘야 한다.
pip install django-environ
설치 후 아래 명령어를 입력해서 잘 설치됐나 확인해본다
내꺼에는 0.8.1 버전으로 설치가 되었다.
pip freeze
그리고 manage.py
가 있는 루트 디렉토리에 이 파일 하나 추가해야된다.
touch .env
# .env 파일에 이렇게 넣음
SECRET_KEY='django-insecure-fqve&3!urq5wjhq6h(+hu*)04$zfqyg+o!6d!+*=+2wy8i@y5$'
DEBUG=True
변수와 값 사이에 공백이 없게 넣어야 한다 꼭
settings.py
로 가서 우선 SECRET_KEY
와 DEBUG
만 설정해보겠다
설명은 코드안에 주석으로 함
'''
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')
python manage.py migrate
python manage.py runserver
SECRET_KEY ='django-insecure-fqve&3!urq5wjhq6h(+hu*)04$zfqyg+o!6d!+*=+2wy8i@y5$'
DEBUG=True
보면 SECERY_KEY
와 =
사이에 공백이 하나 있는데, 이대로 실행하면
이렇게 KEY_ERROR
가 뜬다.
변수=값
변수= 값
이거는 그냥 잘 돌아가는데, 키 값에만 띄어쓰기가 존재할 시 에러가 발생한다.
그냥 무조건 붙여쓰는 습관을 들이자!