Как мне сослаться на переменную настроек Django в моем models.py?


124

Это вопрос для начинающих. Но я в тупике. Как мне сослаться на переменную настроек Django в моем model.py?

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 следует указывать с большой буквы, иначе это не сработает,
Саураб Чандра Патель,

91
from django.conf import settings

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

Там, где написано None, вы поместите значение по умолчанию, если переменная не определена в настройках.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.