Wie verweise ich auf eine Django-Einstellungsvariable in meiner models.py?

124

Dies ist eine sehr Anfängerfrage. Aber ich bin ratlos. Wie verweise ich auf eine Django-Einstellungsvariable in meiner model.py?

NameError: name 'PRIVATE_DIR' is not defined

Habe auch viele andere Sachen ausprobiert, darunter 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)

Was ist der richtige Weg, um dies zu tun?

CodingJoe
quelle
7
from django.conf import settings- docs.djangoproject.com/de/dev/topics/settings/…
wkl

Antworten:

272

Versuchen Sie Folgendes: from django.conf import settingsDann settings.VARIABLEgreifen Sie auf diese Variable zu.

Juankysmith
quelle
16
Etwas Relevantes: Wenn Sie settings_something.pyaufgrund eines in mehreren Umgebungen bereitgestellten Projekts mehrere Instanzen haben, versuchen Sie nicht, aus zu importieren app.settings. Überschriebene Variablen in den anderen Dateien werden nicht wirksam. Verwenden Sie immer den in dieser Antwort genannten Import. Ich brauchte ein paar Stunden, um zu erkennen, was in meinem Projekt vor sich ging.
Ev.
1
Dies funktioniert, wenn es richtig konfiguriert ist: mit der Umgebungsvariablen DJANGO_SETTINGS_MODULE oder mit dem Befehlszeilenparameter manage.py --settings = .. Weitere Informationen finden Sie in den Dokumenten: docs.djangoproject.com/de/2.0/topics/settings
mirek
VAR sollte das letztere Kapital sein, sonst wird es nicht funktionieren
Saurabh Chandra Patel
91
from django.conf import settings

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

Wo es heißt None, geben Sie einen Standardwert ein, falls die Variable nicht in den Einstellungen definiert ist.

HelpyHelperton
quelle