내 models.py에서 Django 설정 변수를 어떻게 참조합니까?


124

이것은 매우 초보적인 질문입니다. 그러나 나는 어리둥절합니다. 내 model.py에서 Django 설정 변수를 어떻게 참조합니까?

NameError: name 'PRIVATE_DIR' is not defined

또한 다음을 포함한 많은 다른 것들을 시도했습니다. settings.PRIVATE_DIR

settings.py :

PRIVATE_DIR = '/home/me/django_projects/myproject/storage_dir'

models.py :

# Problem is here.
from django.core.files.storage import FileSystemStorage

fs = FileSystemStorage(location=PRIVATE_DIR)

class Customer(models.Model): 
    lastName = models.CharField(max_length=20) 
    firstName = models.CharField(max_length=20) 
    image = models.ImageField(storage=fs, upload_to='photos', blank=True, null=True)

이를 수행하는 올바른 방법은 무엇입니까?


7
from django.conf import settings- docs.djangoproject.com/en/dev/topics/settings/...
WKL

답변:


275

이것으로 시도하십시오 : from django.conf import settings그런 다음 settings.VARIABLE해당 변수에 액세스하십시오.


16
관련 항목 : settings_something.py여러 환경에 배포 된 프로젝트로 인해의 여러 인스턴스가있는 경우 에서 가져 오려고하지 마십시오 app.settings. 다른 파일에서 덮어 쓴 변수는 적용되지 않습니다. 항상이 답변에 언급 된 가져 오기를 사용하십시오. 내 프로젝트에서 무슨 일이 일어나고 있는지 깨닫는 데 몇 시간이 걸렸습니다.
Ev.

1
제대로 구성된 경우 작동합니다 : 환경 변수 DJANGO_SETTINGS_MODULE 또는 manage.py 명령 줄 매개 변수 --settings = .. 문서에서 자세히 알아보기 : docs.djangoproject.com/en/2.0/topics/settings
mirek

VAR은 작동하지 않습니다 달리 후자는 자본해야한다
Saurabh 찬드라 파텔

91
from django.conf import settings

PRIVATE_DIR = getattr(settings, "PRIVATE_DIR", None)

라고 표시된 곳에 None변수가 설정에 정의되지 않은 경우 기본값을 입력합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.