Як я можу посилатися на змінну налаштувань 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. Перезаписані змінні в інших файлах не набудуть чинності. Завжди використовуйте імпорт, зазначений у цій відповіді. Знадобилося мені кілька годин, щоб зрозуміти, що відбувається в моєму проекті.
Єв.

1
Це працює, якщо він правильно налаштований: зі змінною середовища DJANGO_SETTINGS_MODULE або з параметром командного рядка command.py --settings = .. Детальніше читайте в docs: docs.djangoproject.com/uk/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.