출처: https://meyouus.tistory.com/64 [정보 공유 - For Me For You For Us]
본문으로 바로가기

01. Django SECRET_KEY 분리하기

Django는 시작할때부터 SECRET_KEYsettings.py 파일에 무작위로 만들어서 입력해준다. 하지만 이 프로젝트를 웹사이트에 등록하게 된다면 이 SECRET_KEY를 다른 사람들이 못 보게 해야 웹사이트의 정보들이 빼돌려지지 않고 정상적으로 돌아갈 수 있을 것이다. 따라서 SECRET_KEY를 분리를 시켜줘야 한다.
이를 하기 위해서는 우선 가상환경에서 pip install python-decouple을 해준다:

>>> pip install python-decouple

이후, 프로젝트의 base directory.env 파일을 만들어준다.

django_instagram
├── / instagram
│ └─ / base
│ └─ .env
│ └─ db.sqlite3
│ └─ manage.py
└── / venv

그리고 그 .env 파일에 다음과 같이 SECRET_KEY를 입력해주고 저장한다.

SECRET_KEY=vo6f*jt$t7*7ifvexe*tt)76d4th8%96m98g+k3&hvk=t=3$p0
# 이 SECRET_KEY는 이 클론코딩의 SECRET_KEY와는 전혀 무관한 값으로, 예시로 보여주기 위함이다.

여기서 중요한 점은, 모든 글자들이 붙어 있어야 한다. 즉, 공백이 존재하면 안된다는 점이다.
다음으로는 base/settings.py 파일에 가서 다음과 같이 설정해준다.

from decouple import config

SECRET_KEY = config("SECRET_KEY")

이렇게 하면 SECRET_KEY를 따로 관리할 수도 있을 뿐더러, 깃허브에 파일들을 올릴 때 .gitignore에 추가를 함으로써 안전하게 보호할 수 있다.


02. 폴더 경로 설정 (TEMPLATES / STATIC FOLDER / MEDIA FOLDER)

이번에는 settings.py에서 파일 경로 설정을 해보도록 하겠다. 파일 맨 아래에 다음과 같이 추가한다:

# TEMPLATE
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR / 'templates'],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

# STATIC / MEDIA
VENV_ROOT = os.path.dirname(BASE_DIR)

STATIC_URL = '/static/'
STATICFILES_DIRS =  [BASE_DIR / 'static']
STATIC_ROOT = os.path.join(VENV_ROOT, 'static_root')

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(VENV_ROOT, 'uploaded_media')

STATIC_ROOTMEDIA_ROOT은 프로젝트 폴더의 바깥에 설정을 해줄 것이다. 또한, templates 폴더의 경우, 우리가 생성하는 app마다 하나씩 생성해도 되지만, 그렇게 한다면 매우 불편하고 난잡해질 것이기 때문에, 아예 templates라는 폴더를 프로젝트 폴더 경로 바로 아래에 생성해준다.


03. 언어 / 장소 설정

마지막으로 해줄 설정은, Django의 언어와 시간 설정을 바꿔주는 것이다. settings.py에서 다음과 같이 바꿔준다.:

LANGUAGE_CODE = 'ko-kr'

TIME_ZONE = 'Asia/Seoul'

이로써 지역은 서울, 언어는 한글로 바꿀 수 있다.


기본적인 app들에 대한 설정은, app을 다루면서 한번에 할 수 있도록 하겠다.