[Django]settings 환경 분리하기

이태연·2021년 12월 28일
0

지금까지 django 초기세팅을 하는 경우에는 my_settings.py를 만들고 이곳에 SECRET_KEYDATABASES를 작성하고 .gitignore에 추가하여 SECRET_KEY와 DATABASES가 노출되지 않도록 하는 방법으로 초기세팅을 진행했었습니다.

하지만 실무에서는 settings환경을 분리하여 관리한다는 것을 배웠고 약식으로나마 실무에서 초기세팅하는법을 참고하여 작성해보았습니다.

(아직 confirm된 setting이 아니기 때문에 추후 변경될 가능성이 있음. 변경되면 update 예정)

common.py

common.py에는 언어,타임존 등 바뀌지 않고 공통으로 사용되는 설정들을 작성했습니다.

local.py

local.py에는 common.py에서 공통으로 사용되는 설정외에 installed app, MIDDLEWARD에 추가 된 부분과 DEBUG=True를 작성했습니다.
그리고 os환경변수를 추가하여 DB를 작성하였습니다.

os환경변수를 작성한 후 runserver를 실행하는데 계속해서 SECRET_KEY가 없다고 KEY_ERROR가 발생했습니다.
하지만 아무리 찾아도 오타는 없었고 환경변수에도 잘 저장되어 있어서 삼십분 넘게 뭐가 문제인지 찾았습니다.

결론은 os환경변수를 설정한 후 터미널을 껐다가 다시 켜니 runserver가 제대로 돌아갔습니다. 허무했지만..어쨌든 문제가 해결되어서 다음 진도로 넘어갈 수 있었습니다.

[참고]
DEBUG=True의 경우 오류가 발생할 경우 그 원인을 자세히 알 수 있는 반면 DEBUG=False일 경우 오류를 숨겨 악의적인 공격으로부터 환경세팅을 보호합니다. 그러므로 배포용 환경세팅의 경우 DEBUG=False로 합니다.

test.py

test.py의 경우 개발환경이 아닌 배포환경에서의 세팅이기 때문에 앞서 말한 것처럼 DEBUG=False 를 작성하여 오류를 숨겨주었습니다.


이전에 해보지 않았던 settings환경을 분리하여 작성하다보니 생각보다 시간이 많이 걸렸고 아직 이렇게 작성하는 것이 맞는지 확실하지 않아서 추후 더 많으 서치와 피드백을 적용하여 업데이트 하도록 하겠습니다.

profile
주니어 백엔드 웹 개발자입니다.

0개의 댓글