오류 해결

[django] django project와 app 환경변수 공유하기

송채채 2022. 10. 26. 16:07

2023-04-26기준

dotenv와 os.getenv가 제일 쉬운것 같아요

from dotenv import load_dotenv

load_dotenv()
# project의 setting

from os.path import join


# Build paths inside the project like this: BASE_DIR / 'subdir'.
# 상위폴더가 있어서 BASE_DIR을 아래와 같이 수정
BASE_DIR = Path(__file__).resolve().parent.parent.parent
print("BASE_DIR: ", BASE_DIR)

SECRET_KEY = os.getenv("SECRET_KEY")

 

참고 블로그

https://daco2020.tistory.com/480

 

python-dotenv _ 환경변수를 .env 파일로 관리하기

환경변수란? 환경변수(environment variable)는 컴퓨터가 사용하는 동적인 변수를 의미한다. 여기서 동적이란 '고정적이지 않은'이라는 의미이다. 환경변수는 프로세스를 동작시키는 데 사용하는 변

daco2020.tistory.com


 

이러한 폴더 구조에서 django가 루트의 .env 파일을 인식하게 하고, search_app의 .py들이 환경변수를 인식하게 해야함.

 

from pathlib import Path
import os, environ
from os.path import join

# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
ENV_PATH = Path(__file__).resolve().parent.parent.parent
env = environ.Env(
    # set casting, default value
    DEBUG=(bool, False)
)
# reading .env file
environ.Env.read_env(env_file=os.path.join(ENV_PATH, ".env"))

# 변수 적용 예시
SECRET_KEY = env('SECRET_KEY')
# 환경변수를 불러오기 위한 코드
import django
from os import path
import sys
sys.path.insert(0,path.abspath('..'))
import 프로젝트명
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "프로젝트명.settings")
django.setup()
# 원하는 환경변수 불러오기
변수 = getattr(프로젝트명.settings, "환경변수", None)

 

 

- 참고블로그

[Python] "ModuleNotFoundError: No module named", 상위 디렉토리 import, sys.path에서 insert와 append 차이

 

[Python] "ModuleNotFoundError: No module named", 상위 디렉토리 import, sys.path에서 insert와 append 차이

import 시행 시 sys.path 리스트에 있는 디렉토리에서만 import 가능하며,기본적으로 상위 또는 같은 계층에 있는 다른 폴더에서는 import 불가능하다.파일이 위와 같은 시스템으로 되어있을 때 run.py에

velog.io

- https://blog.boxcorea.com/wp/archives/2692

 

Django2, settings.py에 설정한 변수를 APP에서 사용하는 방법

settings.py에 설정한 변수를 APP에서 사용하는 방법 Django 프로그램을 작성하다보면 특정 변수를 모든 app 에서 사용하면 좋은 경우가 생긴다. 이런 경우에, settings.py에 변수를 설정하면 원하는 곳에

blog.boxcorea.com

 

반응형