Python-decouple을 사용하여 장고 구성 파일 관리

왜 필요한가?



기본적으로 많은 도입 기사에서는 설정 파일에 각종 설정을 하드 코딩하고 있지만, 소위 SECRET_KEY나 환경 변수 등을 직접 하드 코딩하는 것은 운용적, 보안적인 관점 등에서 실용적으로 생각하면 좋지 않다 .

그래서 설정을 격리할 수 있는 모듈을 도입하고, 별도로 관리하고 거기에서 읽는 것이 하드 코딩을 피하는 수단이 된다.
Python에서는 Python-decouple이라는 모듈이 있으므로 Django에서 settings.py를 예로 사용해 보겠습니다.

덧붙여 이번 작성한 프로젝트는 여기 로부터 볼 수가 있기 때문에 신경이 쓰이는 분은 부디.

소개



설치하고,
$ pip install python-decouple
$ django-admin startproject decoupleproject

프로젝트 만들기.

이미 Python-decouple을 설치했으므로 manage.py와 동일한 디렉토리에 .env 파일을 만듭니다.



그리고, 여기에 각종 설정 파일로 하드 코딩하고 싶지 않은 정보를 .env 에 써, sttings.py 로 임포트하면 환경 마다 전환 유사를 할 수 있으므로 매우 유용합니다.

예를 들어 이번에는

settings.py
from decouple import config


# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))


# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/3.0/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = config('SECRET_KEY')

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = conig('DEBUG' default=False,cost=bool)

ALLOWED_HOSTS = config('ALLOWED_HOSTS',cost=Csv())
SECRET_KEY = '6@gw!zj8jjwjr%da0g=&1dzmhjbi3p%r@6157##n0oix#&ybv2'
DEBUG = True
ALLOWED_HOSTS = []

이런 글을 쓰면 외부에서 알고 싶지 않은 정보를 분리할 수 있습니다.

그 밖에도 데이터베이스의 접속 정보를 숨기는 모듈도 있으므로 조만간 소개하고 싶습니다.
수고하셨습니다.

좋은 웹페이지 즐겨찾기