티스토리 뷰

Django 프로젝트를 생성하게 되면 다양한 기본 설정이 담겨있는 settings.py도 함께 생성된다.

 

그 중 SECRET_KEY가 있는 것을 볼 수 있다. 데이터베이스 연결 정보나 AWS 관련 정보에 비해 별로 중요하지

 

않을 것 같지만 그렇지 않다. SECRET_KEY는 무려 Django의 보안 기능에 활용되기 때문이다. (공식문서 참조)

 

따라서, SECRET_KEY도 별도의 파일을 만들어 settings.py에서 분리하고 settings.py가 이 파일을 읽어와 사용할 수

 

있도록 해야한다.

 


1. secrets.json 파일 생성

먼저, SECRET_KEY를 settings.py에서 분리할 json 포맷의 파일을 생성한다. 이 때, manage.py와 같은 선상에 있도록 파일을 생성한다.

 

파일의 이름은 secrets.json

 

2. secrets.json 파일 작성

secrets.json 파일에는 다음과 같이 현재 settings.py에 있는 SECRET_KEY 값을 적는다.

{
  "SECRET_KEY": "Your SECRET_KEY"
}

 

3. gitignore 파일에 리스트 추가

방금 만든 secrets.json 파일은 git에 업로드되면 안되기 때문에 이전에 만들었던 gitignore 파일에

secrets.json 파일을 추가해준다.

 

4. settings.py 수정

settings.py의 SECRET_KEY 부분을 다음과 같이 secrets.json 파일을 읽어와 파일 안의 SECRET_KEY를 참고할 수 있도록 수정해준다.

 

import os, json
from django.core.exceptions import ImproperlyConfigured

# SECRET_KEY 파일 위치
secret_file = os.path.join(BASE_DIR, 'secrets.json')

with open(secret_file) as f:
    secrets = json.loads(f.read())

# secrets.json 파일에서 SECRET_KEY 가져오기    
def get_secret(setting, secrets=secrets):
    try:
        return secrets[setting]
    except KeyError:
        error_msg = "Set the {} environment variable".format(setting)
        raise ImproperlyConfigured(error_msg)

SECRET_KEY = get_secret("SECRET_KEY")

 

git에 프로젝트를 올리기 전 테스트 서버를 실행했을 때 문제없이 돌아간다면 분리 성공!

 


 

참고 자료

 

Django - settings.py 의 SECRET_KEY 변경 및 분리하기 · 초보몽키의 개발공부로그

Django - settings.py 의 SECRET_KEY 변경 및 분리하기 11 Jul 2017 | python Django settings secret key Two Scoops of Django 5장을 읽고 연습한 내용을 정리한 글입니다. 더 좋은 방법이 있거나, 잘못된 부분이 있으면 편하게 의견 주세요. :) 들어가기 django-admin startproject 명령을 통해서 장고 프로젝트를 생성하면, 기본으로 settings.py 파일이 함께

wayhome25.github.io

 

댓글