반응형
1. 배경
django를 사용하다 보면, API Key나 이메일 보내기 기능의 ID, Password 등의 정보를 시스템적으로 사용할 때가 있습니다. 보통 코드를 깃으로 관리하기 때문에 이런 중요정보가 코드 내부에 있으면 해킹당할 위험이 매우 높습니다. 그래서 django에서는 .env 파일을 이용해 이런 중요 정보를 환경 변수로 사용함으로써 보안을 유지합니다. 설치부터 기초 사용법까지 알아보겠습니다.
2. 해결
위 과정을 naver smtp 메일 보내는 기능을 추가하는 예시와 함께 알아보겠습니다.
1) 설치
python -m pip install django-environ
2) .env 파일 작성
주요 정보는 빨간색으로 가렸습니다. 참고로 .env파일은 깃허브에 올라가지 않도록, .gitignore에 추가해줘야 합니다.
3) settings.py에서 불러오기
from environ import Env
env = Env()
env_path = BASE_DIR / ".env"
if env_path.exists():
with env_path.open("rt", encoding="utf8") as f:
env.read_env(f, overwrite=True)
* 코드 설명
env에 Env() 객체를 만들고 BASE_DIR / ".env"를 이용해 path 객체를 생성합니다. 장고의 Path 객체는 바로 / 와 문자열을 같이 쓰는 걸 지원해 줘서 이렇게 쓸 수 있습니다. 그리고 env_path가 존재하면 즉, .env 파일이 존재하면 "rt" read text 모드로 읽고, encoding은 utf8로 읽겠다는 뜻입니다. overwrite=True 옵션은 이미 메모리에 로딩된 환경변수가 있어도, 새롭게 들어온 환경변수 내역으로 모두 덮어쓰겠다는 뜻입니다.
Reference
1. django Logo: https://codecondo.com/jobs-for-django-developers/django-framework-logo/
반응형
'Back-End > Django' 카테고리의 다른 글
[Django] django command로 메일 보내기2 (HTML Template 활용) (0) | 2022.08.09 |
---|---|
[Django] django command로 메일 보내기 기초 사용법(feat. naver mail) (0) | 2022.08.09 |
[Django] 템플릿 시스템에 bootstrap5 간단하게 적용해보기 (2) | 2022.08.08 |
[Django] User 모델 및 admin 커스텀하기 (0) | 2022.08.07 |
[Django] settings의 INSTALLED_APPS에 앱등록 (0) | 2022.08.07 |